> ## Documentation Index
> Fetch the complete documentation index at: https://laas.mippo.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# LaaS API overview: base URLs, versioning, and errors

> Reference for the Mippo LaaS REST API covering base URLs, versioning, rate limits, request signing, and the shared error response format.

## Base URLs

| Environment | Base URL                       |
| ----------- | ------------------------------ |
| Production  | `https://api.mippo.io`         |
| Sandbox     | `https://sandbox-api.mippo.io` |

All LaaS endpoints are under `/v1/laas/`. Partner management endpoints are under `/laas/partner/`.

## Rate limits

| Scope                   | Limit                 |
| ----------------------- | --------------------- |
| Per API key             | 100 requests / minute |
| KYC submissions         | 20 / minute per key   |
| Transaction initiations | 50 / minute per key   |

Exceeding a limit returns `429 Too Many Requests` with a `Retry-After` header.

## Error format

All errors follow a consistent envelope:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "SCREAMING_SNAKE_CASE",
    "message": "Human-readable description.",
    "details": {}
  }
}
```

### Common error codes

| Code                     | HTTP | Meaning                                   |
| ------------------------ | ---- | ----------------------------------------- |
| `INVALID_API_KEY`        | 401  | Key missing, malformed, or revoked        |
| `PARTNER_SUSPENDED`      | 403  | Partner account has been suspended        |
| `KYC_REJECTED`           | 422  | Client failed compliance screening        |
| `KYC_TOKEN_EXPIRED`      | 422  | KYC token is older than 24h               |
| `INVALID_WALLET_ADDRESS` | 422  | Wallet address failed checksum validation |
| `TRANSACTION_NOT_FOUND`  | 404  | Transaction ID does not exist             |
| `MFA_INVALID_CODE`       | 422  | TOTP code is wrong or expired             |
| `RATE_LIMIT_EXCEEDED`    | 429  | Too many requests                         |
| `INTERNAL_ERROR`         | 500  | Mippo-side error — contact support        |

## Idempotency

For `POST` endpoints, send an `Idempotency-Key` header (any unique string, e.g. a UUID) to safely retry on network failures. Duplicate requests with the same key return the cached response.

```bash theme={null}
curl -X POST https://api.mippo.io/v1/laas/transactions/initiate \
  -H "X-Mippo-API-Key: sk_live_..." \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
```
