API keys and API quickstart
An API key lets your own code or an AI agent work with your tenfeeds account. Like agents, the API can only make drafts. You approve each one in tenfeeds.
Create a key
- Confirm your email first.
- Open API & agents and tap New key.
- Give it a name, like the agent or app that will use it.
- Copy the key right away. tenfeeds shows it only once.
Keys start with tf_live_. You can have up to 10 keys. tenfeeds stores only a scrambled copy of each key (a hash), so it can't show you a key again. If you lose one, delete it and make a new one.
Keep keys safe
- A key works only for your tenfeeds account and the accounts connected to it.
- Don't share it or post it publicly. Anyone with it can make drafts and read your posts.
- Use a separate key for each agent or app, so you can cut one off without breaking the others.
Delete a key
In API & agents, tap Delete next to the key. Anything using it stops working right away.
Your first request
Send your key in the Authorization header. This lists your connected accounts and their IDs:
curl https://tenfeeds.com/api/v1/accounts \
-H "Authorization: Bearer YOUR_API_KEY"This makes a draft for one of them:
curl https://tenfeeds.com/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"caption": "We are open late on Friday.",
"targets": [{ "account_id": "acc_..." }]
}'The reply has the draft's ID and a link to review it. The draft is waiting in Posts → Drafts.
What a draft can include
caption: the text for every account.targets: the accounts, each with anaccount_idand an optionaltextfor that account only.media_ids: optional, from a media upload (below).when: an optional suggested time, like2026-11-03T09:00:00-05:00. You still pick the final time when you review.
The reply also lists problems: platform rules the draft doesn't meet yet, like a missing video for YouTube. You can fix them when you review.
Send an Idempotency-Key header with a unique value of 8 to 64 letters, numbers, dashes or underscores. If you send the same request again with the same key, you get the same draft back instead of a new one.
Other requests
GET /api/v1/posts?status=draftslists your posts. Usescheduled,posted,draftsorfailed.- To upload a photo or video:
POST /api/v1/mediawith the file'sname,mimeandsizein bytes. Then send the file withPUT /api/v1/media/ID/parts/1(bigger files go in more parts, as the first reply says). Last,POST /api/v1/media/ID/completewith the parts'partandetagvalues. - Photos sent through the API aren't converted to JPEG. Instagram only takes JPEG.
For AI agents, the MCP server is easier, and it can copy media from a link. See Connect an AI agent.
Still stuck? Email [email protected]. If it's about a post, include its time and platform.