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

# Publicação

> Poste no feed ou publique um story em nome de um piloto que permitiu, e poste na página da sua organização.

A API de Parceiros pode publicar de duas formas. Com um grant que tem `feed.write` ou `stories.write`, você publica como o piloto que permitiu. Com o scope de parceiro `org.posts`, você publica na página da organização que o MyPilotIndex vinculou a você.

Toda publicação é texto simples. Você não pode anexar mídia, postar em um hangar nem postar anonimamente.

## Poste como um piloto

```bash theme={null}
curl -X POST https://{api-host}/v1/partner/grants/{grant_id}/feed-posts \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "client_ref": "logbook-entry-20261107-01",
    "content": "Landed in Lisbon after my first Atlantic crossing as captain.",
    "visibility": "connections"
  }'
```

```json theme={null}
{ "post_id": "c41e7a02-9d5b-4f18-8a36-7e2b10d4f9aa", "replayed": false }
```

`visibility` é `public` ou `connections`. O padrão é `connections`, a mais restrita das duas.

## Publique um story como um piloto

Um story é `standard` ou `flight`. Um story de voo precisa de `origin` e `destination`, dois códigos de aeroporto diferentes.

```bash theme={null}
curl -X POST https://{api-host}/v1/partner/grants/{grant_id}/stories \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "client_ref": "flight-20261107-kteb-lfpb",
    "subject": "flight",
    "caption": "On the way to Paris.",
    "origin": "KTEB",
    "destination": "LFPB"
  }'
```

```json theme={null}
{ "story_id": "8d2f1b60-4c7e-4a19-b3f5-2e6a90c7d1e4", "replayed": false }
```

Um piloto tem no máximo cinco stories ativos. Passado isso, a resposta é `409 conflict` com o motivo `story_cap`.

## Poste na página da sua organização

O MyPilotIndex vincula o seu parceiro a uma organização e a um publicador, um membro que tem a permissão de postar dessa organização. Sem um vínculo, ou quando o publicador perde essa permissão, a resposta é `403 forbidden` com o motivo `partner_not_bound`.

```bash theme={null}
curl -X POST https://{api-host}/v1/partner/org-posts \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "client_ref": "open-day-2026-11",
    "content": "Open day at our Boca Raton campus this Saturday."
  }'
```

Posts de organização são públicos.

## Repetindo sem risco

Toda criação exige um `client_ref` de 1 a 64 letras, dígitos, pontos, sublinhados, dois-pontos ou hífens. A escolha é sua, e ele é único para o seu parceiro por tipo de publicação.

* Um `client_ref` novo publica e responde `201`.
* O mesmo `client_ref` com o mesmo corpo não publica nada e responde `200` com o id guardado e `replayed: true`. Use isso depois de perder uma resposta.
* O mesmo `client_ref` com outro corpo, ou em outro grant, responde `409 conflict` com o motivo `client_ref_reused`.

Os corpos são comparados depois de normalizados, então espaços nas pontas não geram duas publicações.

## Limites

Estes limites se somam à [cota diária](https://developers.mypilotindex.com/pt-br/rate-limits.md) e contam o que foi publicado nas últimas 24 horas, removido ou não:

| Publicação | Cota |
| - | - |
| Posts como piloto | 3 por grant |
| Stories como piloto | 5 por grant |
| Posts de organização | 10 por parceiro |

Passados esses limites, a resposta é `429 rate_limited` com o motivo `publication_throttled` e `Retry-After`.

## O que o texto não pode trazer

* **Menções.** Uma menção notifica pessoas, então `@handle` e `@all` são recusados com `422 unprocessable` e o motivo `mentions_not_allowed`. Um endereço de e-mail não é uma menção.
* **Um endereço de e-mail pessoal.** Ele é recusado com `400 invalid_request` e o motivo `personal_contact`. Um endereço corporativo não tem problema.

## Removendo o que você publicou

```bash theme={null}
curl -X DELETE https://{api-host}/v1/partner/grants/{grant_id}/feed-posts/{post_id} \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

Uma remoção responde `204`. Stories e posts de organização funcionam do mesmo jeito, em `/stories/{story_id}` e `/v1/partner/org-posts/{post_id}`.

Você só pode remover o que criou. Qualquer outra coisa responde `404 not_found`, exatamente como um registro que não existe. O piloto pode remover qualquer coisa do próprio perfil a qualquer momento, e a sua remoção posterior responde `404`.

## Quando um piloto não pode publicar

Um grant revogado responde `404 not_found`, e o mesmo acontece com um piloto cuja conta está suspensa ou em exclusão. Revogar um grant não remove o que você já publicou: isso fica no perfil do piloto até que ele remova.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.