> ## Documentation Index
> Fetch the complete documentation index at: https://cut.pro/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Publicando nas redes

> Como publicar clipes renderizados no TikTok, Instagram, YouTube e mais

Depois de renderizar um clipe, você pode publicá-lo em uma ou mais contas conectadas com `POST /posts`. Um único post pode levar **vários clipes** para **várias contas** de uma vez.

## Antes de começar

Você precisa de duas coisas:

<CardGroup cols={2}>
  <Card icon="film" title="Um clipe renderizado">
    O `editId` é o `edit_setting_id` que o [render](/api-reference/quickstart) devolve quando concluído. É ele que identifica o vídeo a publicar.
  </Card>

  <Card icon="link" title="Contas conectadas">
    O `connectionId` vem de `GET /connections`. Conecte novas contas pelo OAuth dentro de [cut.pro](https://cut.pro) — a API não conecta contas.
  </Card>
</CardGroup>

## Como o corpo é montado

Cada item de `videos` aponta um clipe (`editId`) para um ou mais destinos (`targets`). Cada destino combina uma conexão (`connectionId`) com a `metadata` específica daquela plataforma (título, privacidade, etc.).

```bash theme={null}
curl -X POST https://api.cut.pro/api/v1/posts \
  -H "X-Api-Key: SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "videos": [
      {
        "editId": "EDIT_SETTING_ID",
        "targets": [
          {
            "connectionId": "CONEXAO_TIKTOK",
            "metadata": {
              "tiktok": {
                "title": "Meu corte viral",
                "privacyLevel": "PUBLIC_TO_EVERYONE"
              }
            }
          },
          {
            "connectionId": "CONEXAO_YOUTUBE",
            "metadata": {
              "youtube": {
                "title": "Meu corte viral",
                "description": "Cortes do episódio de hoje",
                "categoryId": "22",
                "privacyStatus": "public"
              }
            }
          }
        ]
      }
    ]
  }'
```

A `metadata` muda por plataforma (TikTok, YouTube, Instagram, Threads, Bluesky, LinkedIn, Pinterest, Facebook). Os campos obrigatórios e opções de cada uma estão detalhados na página do endpoint **`POST /posts`**, com o playground interativo.

<Tip>
  Para **agendar** em vez de publicar agora, envie `scheduled_at` com uma data ISO 8601 no futuro.
</Tip>

## Acompanhe a publicação

A resposta traz `post_id`, `item_count` e `status` (`pending` ou `processing`). Faça polling em `GET /posts/{id}`:

```bash theme={null}
curl https://api.cut.pro/api/v1/posts/POST_ID \
  -H "X-Api-Key: SUA_CHAVE"
```

O `status` do post evolui assim:

| Status       | Significado                        |
| ------------ | ---------------------------------- |
| `pending`    | Na fila, ainda não começou         |
| `processing` | Publicando nas contas              |
| `completed`  | Todos os itens publicaram          |
| `partial`    | Alguns publicaram, outros falharam |
| `failed`     | Nenhum item publicou               |

O array `items` mostra o resultado por conta — útil quando o status é `partial`.

## Quando algo falha

Itens falham de forma independente: um destino com erro **não derruba** os que já publicaram.

* **Reenviar um item que falhou:** `POST /posts/{id}/items/{itemId}/retry`
* **Remover um item** sem mexer nos demais: `DELETE /posts/{id}/items/{itemId}`
* **Apagar o post inteiro:** `DELETE /posts/{id}`
* **Editar antes de publicar** (ex.: ajustar agendamento): `PATCH /posts/{id}`
