Adeli API
One REST API for your customers' social accounts. Connect an Instagram professional account, a Facebook Page, a TikTok account, or a YouTube channel once, then publish posts, manage comments, read message history, and pull analytics through a single normalized interface — without writing against Meta's Graph API, TikTok API for Business, and the YouTube Data API separately.
Your first three connected accounts are free. See Pricing.
curl https://app.tryadeli.com/api/v1/profiles \
-H "Authorization: Bearer $ADELI_API_KEY"New here? The quickstart takes you from a fresh API key to a published post in six steps. Using an AI agent? Connect it through the MCP server with the same key, and it can call the whole API as tools.
How it fits together
A profile is one of your customers. Your profiles live in your
organization, the workspace your team shares, and you issue an API key for
the organization in the Adeli dashboard. One key reaches every profile, so every
request names the one it acts on, with a profileId or with an accountId
that belongs to it. Nothing defaults to a profile, so a request cannot quietly
act on the wrong customer. Create profiles in the dashboard or with
POST /api/v1/profiles.
Inside a profile you connect accounts — one Instagram account, one TikTok account, one YouTube channel. You do that by sending your customer through the connect flow, which hands you an authorization URL to open in their browser and a session to poll. Adeli stores and refreshes the provider tokens; you never handle them.
From there, every endpoint takes an accountId and returns a normalized shape.
The same POST /api/v1/posts call publishes to Instagram, Facebook, TikTok,
YouTube, X, or Bluesky depending on the platform you pass.
What each provider supports
| TikTok | YouTube | ||
|---|---|---|---|
| Connect via hosted OAuth | Yes | Yes | Yes, one channel per profile |
| List posts | Yes | Yes, with views, shares, and reach | Yes, with views |
| Publish a single image | Yes | Yes | No |
| Publish a carousel | Yes, 2–10 images | Yes, 1–35 photos | No |
| Publish a video | No | Yes, public or as a draft | Yes, public, unlisted, private, or scheduled; vertical videos up to 3 minutes become Shorts |
| Read, reply to, hide, and delete comments | Yes | Yes, plus likes; deletes the account's own comments only | Yes; hiding holds a comment for review, and others' comments are rejected rather than deleted |
| Read message history | Yes | No | No — YouTube has no messaging API |
| Send a message | Yes, text | No | No |
| Account analytics | Views, reach, interactions | Daily views, followers, and engagement; follower demographics | Daily views, watch time, and subscribers; viewer demographics |
| Post analytics | No | Watch time, retention, impression sources | Views, watch time, average view percentage |
Not available in v1
WhatsApp sends approved templates only, and numbers are connected in the dashboard. There is no post editing or deletion, and no outbound webhooks. YouTube uploads stay private until Adeli passes YouTube's API audit. Instagram post listing follows provider pagination on your behalf but exposes no cursors of its own — see Core concepts for the limits that apply to every read.
Base URL
All endpoints live under /api/v1, and every response is JSON.
https://app.tryadeli.com/api/v1The whole API is also described as an OpenAPI 3.1 document at
/docs/openapi.json. Import it into Postman or Insomnia,
generate a client from it, or hand it to an AI coding tool.
Running Adeli locally? Use http://localhost:3000/api/v1 instead. The examples
throughout these docs assume two environment variables:
export ADELI_URL=https://app.tryadeli.com
export ADELI_API_KEY='rk_live_...'Next steps
- Quickstart — connect an account and publish a post.
- Authentication — how API keys work and how to keep them safe.
- Core concepts — profiles, partial responses, and limits.
- MCP server — give an AI agent the whole API as tools, with the same key.
- API reference — every endpoint, parameter, and response.
- OpenAPI spec — the same reference as a machine-readable OpenAPI 3.1 document.