# Create a Facebook Page live broadcast > Markdown version of https://docs.postlake.dev/api/post-social-accounts-by-id-live-broadcasts . The canonical page for humans. > PostLake is the social media API for AI agents: https://postlake.dev/llms.txt `POST /v1/social-accounts/{id}/live-broadcasts` Prepares a Facebook Page broadcast. Facebook returns a one-time secure ingest URL, and may return a separate stream key, for compatible streaming software. PostLake never stores either value. Start the encoder, then call the start endpoint to make it live. Preparing is free; a credit is used only after Facebook confirms the broadcast is live. Meta independently requires the Facebook account managing the Page to be at least 60 days old, the Page to have at least 100 followers, and the person connecting it to have Page-management permission. PostLake cannot override those checks. ## Request Authenticate with a bearer API key. Agents calling over MCP authorise with OAuth instead and never handle the key. ```bash curl -X POST https://api.postlake.dev/v1/social-accounts/{id}/live-broadcasts \ -H "Authorization: Bearer $POSTLAKE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"title":"…","description":"…"}' ``` ### Parameters | Field | Type | Required | What it is | | --- | --- | --- | --- | | `id` | string | Yes | In the URL. | ### Body | Field | Type | Required | What it is | | --- | --- | --- | --- | | `title` | string | Yes | | | `description` | string | No | | ## Response Created. Save the ingest credentials now: they cannot be read later. (`201`). ## Calling this from an agent Agents do not call REST. They call tools. Over the hosted MCP server this operation is `list_social_accounts`, and the agent authorises with OAuth so your API key is never pasted into a chat or seen by the model. You control what any one agent may do: which brands it may act for, which networks it may reach, how much a day, and whether it may spend credits bought up front. ## Errors Every failure uses one shape: a stable `type`, a granular `code`, the field at fault in `param`, and a plain-language `fix`. See https://docs.postlake.dev/errors.md . Retries are safe: send the same `Idempotency-Key` and a call that already succeeded returns its original result rather than repeating it. ## Common questions **Can an AI agent do this without the REST API?** Yes. Over MCP the same job is the list_social_accounts tool. The agent authorises with OAuth, so no API key is pasted into a chat or seen by the model, and the answer comes back in the same normalised shape. **Is it safe to retry this call?** Yes. Send the same Idempotency-Key and a call that already succeeded returns its original result instead of repeating the work. That is what makes it safe to hand to an agent that retries on its own. **What happens when it fails?** You get one error shape: a stable type, a granular code you can branch on, the offending field in param, and a fix written so an agent can correct itself rather than stop. Full list on Errors and retries. ## Related - [List Facebook Page live broadcasts](https://docs.postlake.dev/api/get-social-accounts-by-id-live-broadcasts.md) `GET /v1/social-accounts/{id}/live-broadcasts` - [Read a Facebook live broadcast](https://docs.postlake.dev/api/get-social-accounts-by-id-live-broadcasts-by-liveid.md) `GET /v1/social-accounts/{id}/live-broadcasts/{liveId}` - [End a Facebook live broadcast](https://docs.postlake.dev/api/post-social-accounts-by-id-live-broadcasts-by-liveid-end.md) `POST /v1/social-accounts/{id}/live-broadcasts/{liveId}/end` - [Make a prepared Facebook Page broadcast live](https://docs.postlake.dev/api/post-social-accounts-by-id-live-broadcasts-by-liveid-start.md) `POST /v1/social-accounts/{id}/live-broadcasts/{liveId}/start`