Build social publishing into your product.
A clean REST API with a published OpenAPI spec lets you embed AI-powered social publishing into any app, workflow or agent you build.
curl -X POST https://app.ocoya.com/api/_public/v1/post \-H "X-API-Key: $OCOYA_API_KEY" \-H "Content-Type: application/json" \-d '{"socialProfileIds": ["sp_8f2a1c"],"caption": "New summer menu is here ☀️","media": ["https://cdn.example.com/summer.jpg"],"scheduledAt": "2026-09-01T09:00:00Z"}'
{"id": "post_8f2a1c","status": "SCHEDULED","scheduledAt": "2026-09-01T09:00:00Z"}
Clean REST + OpenAPI
Predictable REST resources with a published OpenAPI spec — generate a client in any language.
API key auth
Send an X-API-Key header — create and revoke keys per brand from your settings.
AI included
The same AI post and campaign generation the app uses, callable from your backend.
Same engine as the app
Every endpoint mirrors what powers Ocoya itself — nothing held back.
Everything the app can do, callable directly.
Eight REST resources cover the full platform — publishing, AI campaigns, brand assets, workflows and brands.
Create, schedule, update and publish posts across connected networks.
Queue AI campaign generation and track posts as they fill in.
List connected profiles and start new social connections.
Fetch curated hashtag sets to attach to posts programmatically.
List reusable Studio design templates for new content.
Inspect, toggle and run automation workflows on demand.
Enumerate brands and scope every call correctly.
Introspect the token — who am I, and what can I access?
You always know where a post is.
Every post carries one of eight statuses, and you can filter on any of them. Poll a campaign while it generates, hold posts behind approval, or alert your own systems the moment something needs a human.
Failures never disappear quietly — NEEDS_ATTENTION and ERROR carry the reason the network gave, so you can surface it in your own UI.
GET /v1/post?statuses=
8 valuesRequests this window
60sRateLimit-Limit
60
RateLimit-Remaining
17
RateLimit-Reset
38
{"message": "You've exceeded the request limit."}
Predictable limits, standard headers.
60 requests per minute by default. Every response carries the standard RateLimit-* headers, so your client can back off before it ever gets a 429 — no guessing, no undocumented throttling.
Let your users connect their own accounts.
Ask for a connection URL and hand it to your user. They approve on the network itself, and the profile lands in your brand ready to publish to — you never touch a social token, and they never see Ocoya.
This is what makes the API viable for a product with customers of its own, rather than just for automating your own account.
Your users never see an Ocoya login — the connection lands in your brand.
Building an AI agent instead?
The same platform is exposed over MCP — 20+ tools your agent can call directly, no REST glue code required.
The API, answered.
Create an API key in Settings → API and send it in the X-API-Key header against the base URL https://app.ocoya.com/api/_public/v1. Keys are scoped per brand and can be revoked at any time — keep them server-side.
Start building social publishing in.
Grab your API token and make your first call in minutes.