{"openapi":"3.1.0","info":{"title":"Outbound Public API","version":"1.0.0","description":"Read-only access to contacts, lists, drafts, and platform events. Auth via Bearer obk_live_* keys minted at /admin/api-keys."},"servers":[{"url":"https://outbound.ustack.ai/api/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"obk_live_<32hex>"}},"schemas":{"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"}},"required":["type","title","status","detail"]},"Contact":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"company":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"domain":{"type":"string","nullable":true}}},"qualificationStatus":{"type":"string"},"fitScore":{"type":"integer","nullable":true},"urgencyScore":{"type":"integer","nullable":true},"list":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ContactList":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"sourceType":{"type":"string"},"description":{"type":"string","nullable":true},"connectionPoint":{"type":"string","nullable":true},"goal":{"type":"string","nullable":true},"userId":{"type":"string"},"archivedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Draft":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"contactId":{"type":"string"},"contactName":{"type":"string"},"subject":{"type":"string"},"bodyPreview":{"type":"string"},"step":{"type":"integer"},"status":{"type":"string"},"sentAt":{"type":"string","format":"date-time","nullable":true},"openedAt":{"type":"string","format":"date-time","nullable":true},"repliedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"Event":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"organizationId":{"type":"string"},"data":{"type":"object","additionalProperties":true},"resource":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"}}}}}},"parameters":{"Cursor":{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque pagination cursor. Pass the `nextCursor` from the previous response."},"Limit":{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200},"description":"Page size. Default 50, max 200."}}},"paths":{"/me":{"get":{"summary":"Get current API key + org info","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"object"},"organization":{"type":"object"}}}}}}}}},"/contacts":{"get":{"summary":"List contacts","security":[{"ApiKeyAuth":["contacts.read"]}],"parameters":[{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/Limit"},{"name":"listId","in":"query","schema":{"type":"string"}},{"name":"qualificationStatus","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Search by name or email."}],"responses":{"200":{"description":"Paginated contact list.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contact"}},"nextCursor":{"type":"string","nullable":true}}}}}}}}},"/contacts/{id}":{"get":{"summary":"Get single contact","security":[{"ApiKeyAuth":["contacts.read"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"404":{"description":"Not found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/contacts/{id}/research":{"get":{"summary":"Get cached research dossier (L4) for a contact","security":[{"ApiKeyAuth":["contacts.read"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Contact or research not found"}}}},"/lists":{"get":{"summary":"List contact lists","security":[{"ApiKeyAuth":["lists.read"]}],"parameters":[{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/Limit"},{"name":"includeArchived","in":"query","schema":{"type":"string","enum":["1","0"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ContactList"}},"nextCursor":{"type":"string","nullable":true}}}}}}}}},"/lists/{id}":{"get":{"summary":"Get single contact list","security":[{"ApiKeyAuth":["lists.read"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}}},"404":{"description":"Not found"}}}},"/drafts":{"get":{"summary":"List drafts","security":[{"ApiKeyAuth":["drafts.read"]}],"parameters":[{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/Limit"},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"contactId","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Draft"}},"nextCursor":{"type":"string","nullable":true}}}}}}}}},"/drafts/{id}":{"get":{"summary":"Get single draft (includes full body)","security":[{"ApiKeyAuth":["drafts.read"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/events":{"get":{"summary":"Paginated platform event log","security":[{"ApiKeyAuth":["events.read"]}],"parameters":[{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/Limit"},{"name":"eventType","in":"query","schema":{"type":"string"},"description":"Single event type or comma-separated list."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"nextCursor":{"type":"string","nullable":true}}}}}}}}}}}