Prerequisites
To use Para, you need an API key. This key authenticates your requests to Para services and is essential for
integration.
Don’t have an API key yet? Request access to the Developer Portal to create API keys, manage billing, teams, and more.
Environments
| Environment | Base URL |
|---|
| Beta | https://api.beta.getpara.com |
| Production | https://api.getpara.com |
All endpoints are versioned under /v1.
Authentication
Include your API key in every request:
curl https://api.beta.getpara.com/v1/wallets/WALLET_ID \
-H "X-API-Key: sk_..."
| Header | Required | Description |
|---|
X-API-Key | Yes | Your partner secret key (server-side only) |
X-Request-Id | No | UUID for request tracing. Para returns one if omitted. |
Never expose your API key in client-side code. Use it only from your backend.
IP Allowlisting
Restrict API access to specific IPs via the Developer Portal (Security → Allowlist). Once configured, requests from other IPs return 401 Unauthorized.
Rate Limits
| Limit | Value |
|---|
| Requests per second | 10 |
| Burst | 20 |
Exceeding limits returns 429 Too Many Requests. Implement exponential backoff:
import time
import requests
def call_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code != 429:
return response
wait = 2 ** attempt # 1s, 2s, 4s
time.sleep(wait)
return response
Error Handling
| Status | Meaning | Action |
|---|
400 | Invalid request body | Check required fields and types |
401 | Invalid API key or IP not allowlisted | Verify key and IP allowlist |
404 | Wallet not found | Confirm wallet ID exists |
409 | Duplicate wallet | Same type + scheme + userIdentifier already exists |
429 | Rate limited | Back off and retry |
500 | Server error | Retry with backoff |
Timeouts
Recommended client timeouts:
| Operation | Timeout |
|---|
| Create wallet | 30s |
| Get wallet | 10s |
| Sign | 30s |