> ## 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.

# Publicaciones

> Publica posts en el feed o stories por un piloto que lo permitió, y publica en la página de tu organización.

La API de Socios puede publicar de dos formas. Con un grant que incluye `feed.write` o `stories.write`, publicas como el piloto que lo permitió. Con el scope de socio `org.posts`, publicas en la página de organización que MyPilotIndex vinculó a tu cuenta.

Toda publicación es texto plano. No puedes adjuntar archivos multimedia, publicar en un hangar ni publicar de forma anónima.

## Publica como el 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` es `public` o `connections`. El valor predeterminado es `connections`, el más restringido de los dos.

## Publica un story como el piloto

Un story es `standard` o `flight`. Un story de vuelo necesita `origin` y `destination`, dos códigos de aeropuerto distintos.

```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 }
```

Un piloto tiene como máximo cinco stories activos. Pasado ese límite, la respuesta es `409 conflict` con el motivo `story_cap`.

## Publica en la página de tu organización

MyPilotIndex vincula tu cuenta de socio a una organización y a un publicador, un miembro que tiene el permiso de publicación de esa organización. Sin un vínculo, o cuando el publicador pierde ese permiso, la respuesta es `403 forbidden` con el 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."
  }'
```

Los posts de organización son públicos.

## Reintentar sin riesgo

Cada creación acepta un `client_ref` de 1 a 64 letras, dígitos, puntos, guiones bajos, dos puntos o guiones. Lo eliges tú, y es único para tu cuenta de socio por tipo de publicación.

* Un `client_ref` nuevo publica y responde `201`.
* El mismo `client_ref` con el mismo cuerpo no publica nada y responde `200` con el id guardado y `replayed: true`. Úsalo después de perder una respuesta.
* El mismo `client_ref` con otro cuerpo, o en otro grant, responde `409 conflict` con el motivo `client_ref_reused`.

Los cuerpos se comparan después de normalizarlos, así que los espacios al inicio o al final no crean dos publicaciones.

## Límites

Estas cuotas se suman a la [cuota diaria](https://developers.mypilotindex.com/es/rate-limits.md) y cuentan lo publicado en las últimas 24 horas, se haya eliminado o no:

| Publicación | Cuota |
| - | - |
| Posts como piloto | 3 por grant |
| Stories como piloto | 5 por grant |
| Posts de organización | 10 por socio |

Pasadas estas cuotas, la respuesta es `429 rate_limited` con el motivo `publication_throttled` y `Retry-After`.

## Lo que el texto no puede llevar

* **Menciones.** Una mención notifica a personas, así que `@handle` y `@all` se rechazan con `422 unprocessable` y el motivo `mentions_not_allowed`. Una dirección de correo no es una mención.
* **Una dirección de correo personal.** Se rechaza con `400 invalid_request` y el motivo `personal_contact`. Una dirección de empresa es válida.

## Eliminar lo que publicaste

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

Una eliminación responde `204`. Los stories y los posts de organización funcionan igual, en `/stories/{story_id}` y `/v1/partner/org-posts/{post_id}`.

Solo puedes eliminar lo que creaste. Cualquier otro caso responde `404 not_found`, exactamente igual que una fila que no existe. El piloto puede eliminar cualquier cosa de su propio perfil en cualquier momento, y tu eliminación posterior responde entonces `404`.

## Cuando un piloto no puede publicar

Un grant revocado responde `404 not_found`, y lo mismo ocurre con un piloto cuya cuenta está suspendida o en proceso de eliminación. Revocar un grant no elimina lo que ya publicaste: queda en el perfil del piloto hasta que el piloto lo elimine.


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