Developer API quickstart
This guide shows you the bare minimum to call the Arca API: where it lives, how to authenticate, and how to make your first request.
Two API surfaces
| Service | Base URL | What it handles |
|---|---|---|
| Tenant API | https://api-tenant.inspireplatform.io/ | Sign-in, tokens, users, tenants, roles, API keys |
| Payment API | https://api-payment.inspireplatform.io/ | Customers, products, payment links, invoices, subscriptions, transactions, refunds, webhooks |
Every authenticated request needs your access token and your tenant identifier:
Authorization: Bearer <access token>tenant: <your-tenant-slug>
Step 1 — Get an access token
Sign in with your account credentials to get an access token and a refresh token:
POST https://api-tenant.inspireplatform.io/auth/sign-in
Content-Type: application/json
{
"tenantId": "your-tenant-slug",
"email": "dev@yourcompany.com",
"password": "..."
}
The response includes an accessToken and a refreshToken. When the access token expires, exchange the refresh token at POST /auth/refresh-token.
API keys: Arca also supports API-key authentication for server-to-server use. Exchange your public/secret key pair at
POST /auth/api-keys/sign-in for the same kind of bearer token. Manage keys at POST /api-keys (the secret is shown only once at creation).
Step 2 — Make your first call
List customers in your account:
curl https://api-payment.inspireplatform.io/customers?page=0&pagesize=10 \
-H "Authorization: Bearer eyJ…" \
-H "tenant: your-tenant-slug"
Or create a payment link:
curl -X POST https://api-payment.inspireplatform.io/payment-links \
-H "Authorization: Bearer eyJ…" \
-H "tenant: your-tenant-slug" \
-H "Content-Type: application/json" \
-d '{"priceAmount": 5000, "currencyId": "…"}'
What the API covers
| Area | Examples |
|---|---|
| Identity | /auth/sign-in, /auth/refresh-token, /api-keys, /user, /roles |
| Customers & payment methods | /customers, /customers/{id}/customer-payment-methods, /customers/{id}/customer-cards |
| Catalog | /products, /product-prices, /coupons |
| Payments | /payment-links, /invoices, /subscriptions, /orders, /payments, /transactions, /payments/{id}/refund |
| Webhooks & events | /webhook-urls, /events |
| Reference data | /countries, /states, /currencies, /languages, /timezones |
Conventions
- Pagination. List endpoints accept
page(0-indexed),pagesize,sortby(e.g.createdDate.DESC), andkeywords. - Error shape. Errors come back as JSON with a
statusCodeand anerrorsstring in the formexception:KEY(e.g.exception:INVALID_CREDENTIALS). Treat these keys as machine-readable enums — some don't have a human-readable English translation, so build your own user-facing copy in your client. - Rate limits. A global limit of about 300 requests per minute per IP. Public pay endpoints (
/payment-links/pay/{hash},/invoices/pay/{hash},/orders/pay/{hash}) are tighter: 20 attempts per 10 minutes per IP. - Webhooks. See the webhooks guide. Note that Arca does not sign outbound webhooks today — validate the
tenantId/googleTenantIdin the payload body and use HTTPS.
Good to know
- There isn't a separate public sandbox host today — sandbox access is provided as a separate tenant on the same hosts. Ask Arca for sandbox credentials when you start.
- The PDFs and READMEs sometimes describe an
@inspire-payments/sdknpm package — that package is aspirational and isn't published yet. Use the raw HTTP API for now.
Still having trouble?
Contact Arca support and include:
- The endpoint and method you're calling
- The request (with secrets redacted) and the full response
- Your tenant slug and approximate time of the call