Documentation Index Fetch the complete documentation index at: https://dev-docs.multihopper.com/llms.txt
Use this file to discover all available pages before exploring further.
Base URL
Authentication
All API endpoints require an API key. Pass it via the x-api-key header or as a Bearer token.
# Header authentication
x-api-key: mh_live_abc123...
# Or Bearer token
Authorization: Bearer mh_live_abc123...
API keys are prefixed to indicate mode:
Prefix Mode mh_test_Test mode — uses test accounting mh_live_Live mode — uses live accounting
The Solana cluster (mainnet/devnet) depends on the environment the API is deployed against.
Use JSON request bodies for POST requests and standard path/query parameters for GET and DELETE requests.
Content-Type: application/json
Error codes
All errors include a structured MH_XXX code for programmatic handling.
Authentication
Code Description Status MH_001Invalid or missing API key 401 MH_002API key revoked 401 MH_003Integration suspended 403 MH_004Rate limit exceeded 429
Validation
Code Description Status MH_010Unsupported token mint or missing pricing context 400 MH_011Invalid wallet address 400 MH_012Amount below minimum 400 MH_013Hops out of range (3–10) 400 MH_014Arrival time below minimum for hop count 400 MH_015Invalid external ID format 400
Transfer lifecycle
Code Description Status MH_030Transfer not found 404 MH_031Route creation failed 500 MH_032Funding not completed within timeout 408 MH_033Transfer already exists (duplicate externalId) 409 MH_034Transfer expired 410
Webhooks
Code Description Status MH_050Webhook URL unreachable 400 MH_051Max webhook endpoints reached 400
Reward claims
Code Description Status MH_060Below minimum claim threshold 400 MH_061Rewards wallet not set 400
Internal
Code Description Status MH_090Internal server error 500 MH_091Service temporarily unavailable 503
Rate limits
Rate limits are enforced per API key, per endpoint. When exceeded, the API returns MH_004 with a Retry-After header.
Endpoint Limit Window POST /transfers10 req 60s POST /transfers/:id/funding/refresh10 req 60s POST /transfers/:id/funding/confirm10 req 60s POST /transfers/estimate30 req 60s GET /transfers/:id60 req 60s GET /transfers60 req 60s POST /webhooks30 req 60s GET /webhooks30 req 60s DELETE /webhooks/:id30 req 60s GET /usage30 req 60s
Pricing
Pricing tiers are determined by the USD equivalent of the transfer at quote time. For native SOL, the backend resolves USD value from CoinGecko spot pricing. Fees are split between you (the integrator) and the platform.
Estimate fees Check costs before creating a transfer.
Create transfer Create a transfer and receive funding transactions.
Webhooks Receive real-time transfer lifecycle events.
Usage View usage and fee summaries for your integration.