← Developer Portal

API Reference

Complete reference for all VISION platform endpoints.

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

GET/api/v1/uplift/campaigns

Parameters

  • ?status=ENABLED|PAUSED|REMOVED

Example response

{"success":true,"data":{"campaigns":[{"id":"cmp_1","name":"Brand Defense","spend_last_30d":4200,"roas":4.2}]}}
GET/api/v1/uplift/health-score

Example response

{"success":true,"data":{"score":74,"grade":"B","categories":{"structure":82,"bidding":71}}}
GET/api/v1/uplift/keywords

Parameters

  • ?campaign_id=
  • ?min_spend=
  • ?limit=50
POST/api/v1/uplift/audits
GET/api/v1/uplift/audits

Atlas Investor relations

Scope: atlas:read, atlas:write

GET/api/v1/atlas/pipeline

Example response

{"success":true,"data":{"deals":[{"id":"deal_1","company":"Quantum Dynamics","stage":"Due Diligence","amount":1000000}]}}
GET/api/v1/atlas/readiness
GET/api/v1/atlas/data-room
GET/api/v1/atlas/updates
POST/api/v1/atlas/updates

UpBookIt AI booking

Scope: upbookit:read, upbookit:write

GET/api/v1/developer/export/bookings

Parameters

  • ?status=confirmed|pending|cancelled
  • ?from=ISO8601
  • ?to=ISO8601
GET/api/v1/developer/export/leads

Parameters

  • ?status=new|qualified|booked|converted
  • ?source=organic|paid|referral

UpInbox AI email

Scope: upinbox:read, upinbox:write

POST/api/v1/upinbox/draft

Parameters

  • body: { thread_context, skill?, tone? }
POST/api/v1/upinbox/categorize
GET/api/v1/upinbox/skills
POST/api/v1/upinbox/skills/learn

Paula Property AI

Scope: paula:read, paula:write

GET/api/v1/platform/me
GET/api/v1/platform/me/subscriptions

UpWrite AI content

Scope: upwrite:read, upwrite:write

POST/api/v1/upwrite/generate

Parameters

  • body: { topic, product, tone, word_count? }
GET/api/v1/upwrite/posts

Parameters

  • ?status=draft|review|published
POST/api/v1/upwrite/review

Sandbox

Use upgpt_test_* keys to access isolated sandbox data. Seed your sandbox before testing.

POST/api/v1/developer/sandbox/seed

Example response

{"success":true,"data":{"seeded":true,"products":["uplift","atlas","upbookit","upinbox","paula","upwrite"],"resources_created":62}}
GET/api/v1/developer/sandbox/seed

API key management

GET/api/v1/developer/keys
POST/api/v1/developer/keys

Parameters

  • body: { name, environment: live|sandbox, scopes: string[] }
DELETE/api/v1/developer/keys/:id
POST/api/v1/developer/keys/:id/rotate
GET/api/v1/developer/keys/:id/usage

Parameters

  • ?days=7 (max 90)

Error codes

StatusCodeMeaning
401UNAUTHORIZEDMissing or invalid API key
403FORBIDDENValid key, insufficient scope
400VALIDATION_FAILEDRequest body failed validation
404NOT_FOUNDResource not found
429RATE_LIMITEDToo many requests — check X-RateLimit-* headers
500INTERNALServer error — contact support with trace_id

Need help with your integration?