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.
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. You create a profile in the Adeli dashboard, issue an API key while that profile is selected, and the key is then permanently bound to it. Every request you make with that key sees only that profile's data, so a bug in your code cannot leak one customer's accounts into another's.
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, TikTok, or YouTube
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/v1Running 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.