Choose the narrowest integration surface that owns the behavior you need.
Integration map
| You are building… | Use |
|---|---|
| Wallet or service | REST/gRPC/RPC and @rp1/sdk |
| Browser-owned conversion | Router |
| Solidity app | EVM JSON-RPC and precompiles |
| Cross-chain bridge | IBC, InstaWrap, and light-client boundaries |
| Institutional operator | RP1 Bank and Enterprise |
| Autonomous agent | AI, MPP, and Velocity |
Integration invariant
Every signed action should bind the network identity, signer, message values, gas, and expected recipient. Every completion should be based on a committed observation that matches the submitted transaction, not just on a local UI state or an HTTP response.
Before production
- Pin the chain ID and endpoint configuration per environment.
- Query module parameters and capability state instead of copying defaults.
- Use integer base-unit strings, not floating-point money values.
- Persist the signed envelope and transaction identity for recovery.
- Test rejection, timeout, stale-price, paused, undercollateralized, and pending-bridge states.