# apublished

> Publish to social platforms on a schedule. Connect accounts once, then compose
> content once and publish it to N platforms at chosen times, with per-platform
> validation before send and a durable record of what went out.

Agents and humans use the same API. Everything the web app can do is a documented
endpoint.

## Start here

- [Full API reference](https://apublished.com/llms-full.txt): the whole API as one flat file.
- [OpenAPI 3.1](https://apublished.com/v1/openapi.json): plain JSON, no auth, no JavaScript.
- [Recipes](https://apublished.com/docs/agents/recipes.md): connect a channel, schedule a video,
  handle a reauth, recover missed webhooks, batch a week.
- [Errors](https://apublished.com/docs/agents/errors.md): every code, its cause, its remediation.

## Per-platform briefs

- [Simulator](https://apublished.com/docs/agents/simulator.md): limits, required settings, what people get wrong.

## MCP

Streamable HTTP at `https://apublished.com/mcp`, the same
operations as tools. Authenticate with the same key.

## The three things worth knowing before you write any code

1. **Validate before you commit.** `POST /v1/posts:validate` has no side effects and
   returns the exact violations with actual and allowed values. Iterating there is
   free; a rejected post is not.
2. **Send an Idempotency-Key on every mutation, and reuse it when you retry.** The
   same key with the same body returns the original response rather than posting
   twice.
3. **Publishing is asynchronous everywhere.** `t_dispatch` is when the platform
   accepted the call — that is what we guarantee, within ±30 seconds. `t_live` is
   when it becomes visible, which is the platform's business and can take minutes.
