Skip to main content
Create API keys in the partner portal after you sign up and complete KYB. Your partner reference (liquidramp-client-id) is shown in the portal when you generate keys. Test hosts issue *_test_* keys; production issues *_live_*. See Sandbox vs production.
The full secret_key and encryption_key are shown once when you create keys. Store them in a secrets manager before you leave the page. Creating a new key set revokes the previous set for your partner.
  • public_keyAuthorization: Bearer … on read endpoints (no HMAC)
  • secret_keyAuthorization: Bearer … on your backend for reads and writes (HMAC required)
  • encryption_key → HMAC signing only (never a request header)
  • Partner reference → liquidramp-client-id
pk_* requests do not require HMAC. Every sk_* request — including reads — requires liquidramp-timestamp and liquidramp-signature. Sign with enc_*, not with the secret key.

Public key (pk_*)

Use the public key for read routes such as GET /v1/institutions, GET /v1/networks, and GET /v1/exchange-rate. You can call the same reads with sk_* from your backend instead (with HMAC).

Required headers

Secret key (sk_*)

Use the secret key only on your backend. It can perform read requests and all write routes (quotes, orders, fulfilments). Never embed sk_* in a mobile app, browser, or other client-side code.

Required headers

Sign with your enc_* encryption key.

Canonical string

Node.js signing example

Common mistakes

  • Signing with sk_* instead of enc_*
  • Omitting /v1 or the query string from path
  • Re-serializing JSON (key order changes the body)
  • Using seconds instead of milliseconds for the timestamp
  • Sending sk_* or enc_* from a browser or mobile app
For outbound webhook verification, see Webhook verification.

Key security

  • Store keys in a secrets manager — never commit them to source control.
  • Keep sk_* and enc_* on the backend only. Treat pk_* as sensitive as well.
  • Rotate keys in the portal if credentials may have leaked. Rotate enc_* and sk_* together.

IP whitelist

If your partner profile has an IP whitelist, requests from other IPs receive 403 with code E_IP_BLOCKED. Manage the whitelist in the portal.

Error responses

Authentication failures typically return:
Some auth failures use { "status": "failed", "message": "...", "data": null } with HTTP 401 or 403.

Next steps