Skip to content

Developers

The Optimate API

Connect Optimate to your own software, Zapier or Make. Schedule and publish posts to LinkedIn, Instagram, Facebook, X, YouTube, TikTok, Pinterest, Threads, Google Business and Bluesky, save drafts for someone to finish, make branded designs, and pull your analytics and best posting times, all with one key.

The API is included on Pro, Studio and Agency, and during the free trial. It does the same things, with the same checks, as Optimate in Claude or ChatGPT.

1. Get a key

  1. In Optimate, open Settings → Automations and find API keys.
  2. Name the key after what will use it, like “Zapier”, so you know which to revoke later.
  3. Choose Read and post to schedule and publish, or Read only for reports and dashboards.
  4. Copy the key straight away. It starts with opt_live_ and is shown only once.

2. Your first request

Send the key in the Authorization header on every request. Everything is JSON. Start by checking the key works:

curl https://www.optimatesocial.com/api/v1/me \
  -H "Authorization: Bearer opt_live_YOUR_KEY"

Then see which accounts you can post to. Each one has an accountId you can use to pick it:

curl https://www.optimatesocial.com/api/v1/accounts \
  -H "Authorization: Bearer opt_live_YOUR_KEY"

If you manage several clients, the API works on whichever client is active in Optimate, exactly like the app. Switch client in Optimate to reach another client's accounts.

3. Scheduling and publishing

Give a caption, the platforms and a time. Times are your local time with no offset, read in the timezone your Optimate account uses (/accounts tells you which).

curl https://www.optimatesocial.com/api/v1/posts \
  -H "Authorization: Bearer opt_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "Our autumn menu starts Monday",
    "platforms": ["instagram", "facebook"],
    "scheduledFor": "2026-10-20T09:00",
    "mediaUrl": "https://…"
  }'

Instagram and Pinterest need a picture, and TikTok and YouTube need a video. A mediaUrl must be a file already in Optimate: one from GET /media, POST /designs or POST /images.

Check before you send. Add "preview": true to see exactly what would happen, without scheduling anything. The answer includes a confirmToken. Send the same request again with that confirmToken (and without preview) to go ahead.

Retrying is safe with a token. If a request with a confirmToken times out, send it again with the same token: Optimate reports what already happened instead of posting twice. A request without a token also returns the token it used, so keep it.

POST /posts/publish works the same way but posts straight away, and can't be undone. Client approval still applies: a scheduled post for a client who approves posts waits for their approval, and such a client can't be published to straight away.

4. Zapier and Make

There is no Optimate app inside Zapier or Make yet, but both can call the API directly, so you can connect Optimate today.

  • Zapier: add a Webhooks by Zapier action, choose Custom Request, set the method to POST, the URL to https://www.optimatesocial.com/api/v1/posts, add a header Authorization with the value Bearer opt_live_YOUR_KEY, and put the JSON from step 3 in the data box.
  • Make: add an HTTP → Make a request module with the same URL, method, header and JSON body.

For a Zap that runs on its own, consider POST /drafts instead: the post waits in your Planner for you to check and schedule.

5. Every endpoint

All paths start with https://www.optimatesocial.com/api/v1. The full reference, with every field, is the OpenAPI document, which tools like Postman can import.

EndpointWhat it doesKey needs
GET /meCheck your key: its scopes and your plan.Read
GET /accountsThe social accounts connected to the active client, with the accountId values the post endpoints take, and the timezone times are read in.Read
GET /analyticsFollowers, reach, impressions and engagement per platform over 7, 30 or 90 days.Read
GET /analytics/top-postsYour best-performing posts by engagement, optionally for one platform.Read
GET /best-timesThe days and hours your own posts do best, and the next free best slot.Read
GET /brandThe active client's brand: name, tone, content pillars, words to avoid and colours.Read
GET /mediaPhotos and videos in your Optimate media library, with links you can attach to a post.Read
GET /postsUpcoming scheduled posts, drafts, or both.Read
POST /postsSchedule a post for a future time. Send preview: true first to check what would happen without scheduling anything.Read and post
POST /posts/publishPublish straight away to your connected accounts. This cannot be undone. Each account's result is reported separately.Read and post
PATCH /posts/{id}Change the caption or time of a post that hasn't gone out yet.Read and post
DELETE /posts/{id}Cancel a scheduled post or draft that hasn't gone out yet.Read and post
POST /draftsSave a post as a draft for someone to finish and schedule in Optimate. Nothing is published.Read and post
POST /designsMake a graphic in your logo and brand colours from a headline (1 AI credit). Returns a link you can attach to a post.Read and post
POST /imagesGenerate a picture from a description (10 AI credits). Returns a link you can attach to a post.Read and post

6. Errors and limits

When something is refused, the answer has an HTTP error status and a sentence you can show a person:

{ "error": { "message": "scheduledFor must be at least a minute in the future." } }
  • 400: the request is malformed, such as an unknown field.
  • 401: the key is missing, wrong or revoked.
  • 403: the key is read-only, your team role is view-only, or your plan doesn't include the API.
  • 422: Optimate understood the request but couldn't do it, such as a time in the past.
  • 429: too many requests. Wait for the number of seconds in the Retry-After header.

Each key can make 60 requests a minute, and each account 120 across all its keys. Of those, 20 a minute may schedule, publish, edit or create. Designs use 1 AI credit and AI images use 10, from the same credits as the app.

7. Keeping your key safe

  • A key works like your password for the API. Keep it on a server or in Zapier, never in a web page or an app people can download.
  • Make one key per tool, and give it Read only unless it needs to post.
  • We store only a scrambled fingerprint of each key, so nobody at Optimate can read it back.
  • Revoke a key in Settings → Automations and it stops working on the very next request. Settings also shows when each key was last used.
  • If you're a team member, a key acts with your role in the workspace you're working in. A view-only member's key can only read.

Questions or something missing? Get in touch.