Authentication
All API requests require authentication. The VISION API supports four auth modes — API keys are the recommended method for integrations.
X-API-Key header
Recommended. Pass your API key as a header.
X-API-Key: upgpt_live_abc123...Query param
Alternative for environments where headers are restricted.
?api_key=upgpt_live_abc123...Sandbox vs Live keys
Keys starting with upgpt_test_ are sandbox keys — they return pre-seeded dummy data. Keys starting with upgpt_live_ operate on real data. Seed sandbox data with POST /api/v1/developer/sandbox/seed.
Response format
All responses follow a consistent envelope format.
{
"success": true,
"data": { ... },
"context": null, // optional cross-sell insight
"error": null,
"meta": {
"trace_id": "uuid-v4",
"timestamp": "2026-03-28T00:00:00.000Z"
}
}UpLift Ad intelligence
Scope: uplift:read, uplift:write
/api/v1/uplift/campaignsParameters
- ?status=ENABLED|PAUSED|REMOVED
Example response
{"success":true,"data":{"campaigns":[{"id":"cmp_1","name":"Brand Defense","spend_last_30d":4200,"roas":4.2}]}}/api/v1/uplift/health-scoreExample response
{"success":true,"data":{"score":74,"grade":"B","categories":{"structure":82,"bidding":71}}}/api/v1/uplift/keywordsParameters
- ?campaign_id=
- ?min_spend=
- ?limit=50
/api/v1/uplift/audits/api/v1/uplift/auditsAtlas Investor relations
Scope: atlas:read, atlas:write
/api/v1/atlas/pipelineExample response
{"success":true,"data":{"deals":[{"id":"deal_1","company":"Quantum Dynamics","stage":"Due Diligence","amount":1000000}]}}/api/v1/atlas/readiness/api/v1/atlas/data-room/api/v1/atlas/updates/api/v1/atlas/updatesUpBookIt AI booking
Scope: upbookit:read, upbookit:write
/api/v1/developer/export/bookingsParameters
- ?status=confirmed|pending|cancelled
- ?from=ISO8601
- ?to=ISO8601
/api/v1/developer/export/leadsParameters
- ?status=new|qualified|booked|converted
- ?source=organic|paid|referral
UpInbox AI email
Scope: upinbox:read, upinbox:write
/api/v1/upinbox/draftParameters
- body: { thread_context, skill?, tone? }
/api/v1/upinbox/categorize/api/v1/upinbox/skills/api/v1/upinbox/skills/learnPaula Property AI
Scope: paula:read, paula:write
/api/v1/platform/me/api/v1/platform/me/subscriptionsUpWrite AI content
Scope: upwrite:read, upwrite:write
/api/v1/upwrite/generateParameters
- body: { topic, product, tone, word_count? }
/api/v1/upwrite/postsParameters
- ?status=draft|review|published
/api/v1/upwrite/reviewSandbox
Use upgpt_test_* keys to access isolated sandbox data. Seed your sandbox before testing.
/api/v1/developer/sandbox/seedExample response
{"success":true,"data":{"seeded":true,"products":["uplift","atlas","upbookit","upinbox","paula","upwrite"],"resources_created":62}}/api/v1/developer/sandbox/seedAPI key management
/api/v1/developer/keys/api/v1/developer/keysParameters
- body: { name, environment: live|sandbox, scopes: string[] }
/api/v1/developer/keys/:id/api/v1/developer/keys/:id/rotate/api/v1/developer/keys/:id/usageParameters
- ?days=7 (max 90)
Error codes
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Valid key, insufficient scope |
| 400 | VALIDATION_FAILED | Request body failed validation |
| 404 | NOT_FOUND | Resource not found |
| 429 | RATE_LIMITED | Too many requests — check X-RateLimit-* headers |
| 500 | INTERNAL | Server error — contact support with trace_id |
Need help with your integration?