API introduction
Authentication, formats, and conventions of the Tebar REST API.
Base URL: https://api.tebar.app/v1The dashboard and Tebar's own MCP server use this API, so anything you can do there can also be done through the API.
Authentication
Create an API key in the dashboard: the account menu → API keys → Create an API key. Choose read or read and write access. The full key is only shown once.
Send the key in the Authorization header:
curl https://api.tebar.app/v1/accounts \
-H "Authorization: Bearer tb_live_xxx"- Keys are accepted only in the header, never in the query string.
- Tebar only stores a hash of the key, so a lost key cannot be shown again. Revoke it and create a new one.
- Up to 25 active keys per account.
writeaccess includesread.
Format
- Request and response bodies are JSON with
snake_casefield names. - Times are ISO 8601. Send them with a time zone (
2026-10-15T09:00:00+07:00); responses are always in UTC.
Pagination
GET /v1/posts?limit=20&cursor=...{ "data": [], "next_cursor": "..." }next_cursor is null on the last page. limit is at most 100.
Idempotency
Send an Idempotency-Key header when creating a post. If a request with the same key and body is sent again (after a timeout, for example), Tebar returns the post it already created instead of making a new one. The same key with a different body is refused with 409 idempotency_conflict.
curl -X POST https://api.tebar.app/v1/posts \
-H "Authorization: Bearer tb_live_xxx" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"content":"Hello!","targets":[{"account_id":"..."}]}'Rate limits
Responses include the RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers. When a limit is exceeded, the API answers 429 rate_limited.
Main endpoints
| Method | Path | Scope | What it does |
|---|---|---|---|
| GET | /me | read | Account info and the token's kind of access |
| GET | /accounts | read | Connected social accounts |
| GET | /accounts/{id}/publishing-limit | read | Remaining posting quota |
| POST | /accounts/discord/webhook | write | Connect a Discord channel with a webhook URL |
| POST | /posts | write | Create a post |
| GET | /posts, /posts/{id} | read | List and details of posts created through Tebar |
| PATCH | /posts/{id} | write | Change a scheduled post |
| DELETE | /posts/{id} | write | Cancel a scheduled post |
| POST | /posts/{id}/publish | write | Publish now |
| POST | /posts/{id}/retry | write | Retry the accounts that failed |
| POST | /media/from-url, /media/upload | write | Upload media |
| GET | /ideas/board | read | Ideas board |
| POST | /ideas, /idea-columns | write | Add an idea, add a column |
| GET | /comments | read | Comments |
| GET | /accounts/{id}/insights | read | Account statistics |
| GET | /accounts/{id}/posts | read | Every post on an account |
| GET | /accounts/{id}/posts/{postId} | read | One post and its Threads thread parts |
| POST | /insights/sync | read | Fetch the latest statistics and post list |