REST API
Create and read leads and customers from your own systems. Version 1 is live: bearer-authed with workspace API keys, stable snake_case responses, honest limits.
Base URL & versioning#
All endpoints live under https://adwixatlas.com/api/v1. The v1 contract is stable — fields are only ever added, never renamed or removed. Breaking changes would ship as v2 alongside, not on top.
Authentication#
Create a key in Atlas → Settings → Integrations → API Keys (workspace owner only, up to 10 active keys). The full secret — aa_live_… — is shown once at creation; we store only a hash, so copy it immediately. Send it on every request:
curl https://adwixatlas.com/api/v1/leads \ -H "Authorization: Bearer aa_live_xxxxxxxxxxxxxxxx"
A key grants access to its own workspace's data only, across all v1 endpoints. Revoke a key anytime from the same Settings card — it stops working on the very next request. The list there also shows each key's last used time, so a forgotten integration is easy to spot.
Rate limits#
120 requests per minute per key. Over it you get 429 with Retry-After: 60 — wait and resend. Request bodies are capped at 100 KB (413 beyond). List endpoints return at most 100 rows per call.
Conventions#
| Field | Accepted keys | Notes |
|---|---|---|
| Lists | { "data": [...], "has_more": true } | Page with ?limit= (1–100, default 25) and ?offset=. has_more tells you whether another page exists. |
| Single objects | { "data": { ... } } | Creates return 201 with the full created object. |
| Errors | { "error": "human-readable message" } | 401 bad/revoked key · 404 not found · 413 too large · 422 validation · 429 rate limit · 500 our side (safe to retry with backoff). |
| Field style | snake_case | e.g. travel_date, follow_up_date, total_spend, created_at (ISO 8601 timestamps). |
Endpoints#
| Field | Accepted keys | Notes |
|---|---|---|
| Leads | GET /v1/leads · POST /v1/leads · GET /v1/leads/{id} | List (status filter), create (fires your automations + ad attribution, same as the webhook), fetch one. |
| Customers | GET /v1/customers · POST /v1/customers · GET /v1/customers/{id} | List (search on name/phone/email), create, fetch one. |
| Outbound webhooks | Atlas → your URL | lead.created · lead.stage_changed · quote.accepted, HMAC-signed with retries — see the webhooks page. |
Spec & tooling#
— OpenAPI 3.0 spec — import into any client or codegen tool.
— Postman collection — import, set the apiKey variable, go.
Planned next#
lead.stage_changed → confirmed covers the booking-won moment) and update endpoints (PATCH) for leads. Tell us what you need — real requests shape the order.