Ir al contenido

Publicar

Una petición, todas las redes. Cada destino puede llevar su propio texto, medios y opciones.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Lanzamos la colección de otoño 🍂",
"targets": [
{
"accountId": "acc_ig"
},
{
"accountId": "acc_li"
}
]
}'

Añade scheduledFor en ISO 8601 con zona horaria.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Abrimos el viernes a las 9",
"scheduledFor": "2026-10-30T09:00:00+01:00",
"targets": [
{
"accountId": "acc_ig"
}
]
}'

Puedes cancelarla antes de que salga con POST /v1/posts/{id}/cancel.

Con queue: true toma el siguiente hueco libre de la cola del perfil. Todas las cuentas tienen que ser del mismo perfil.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Consejo del día",
"queue": true,
"targets": [
{
"accountId": "acc_ig"
}
]
}'

Con draft: true se guarda sin publicar ni programar.

Cada destino puede sustituir el texto (content) y los medios (media) del post, y llevar las opciones de su red con la clave de la red (instagram, youtube, tiktok…). Mira Opciones por red.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Así se hace nuestra chaqueta",
"media": [
{
"type": "video",
"url": "https://cdn.acme.com/chaqueta.mp4"
}
],
"targets": [
{
"accountId": "acc_ig",
"instagram": {
"format": "reel",
"firstComment": "#otoño #moda"
}
},
{
"accountId": "acc_yt",
"youtube": {
"title": "Así se hace nuestra chaqueta",
"visibility": "public"
}
},
{
"accountId": "acc_x",
"content": "Así se hace nuestra chaqueta 🧵",
"x": {
"thread": [
"1/ Empieza en el taller…"
]
}
}
]
}'
Estado Qué significa
draft Borrador, sin fecha.
pending_approval Esperando a que un propietario o admin la apruebe. No sale hasta entonces.
scheduled Programada o en la cola, esperando su hora.
publishing Se está enviando a las redes.
published Publicada en todas. Cada destino tiene su url.
partial Publicada en algunas y fallida en otras. Reintenta las fallidas con POST /v1/posts/{id}/retry.
failed No salió en ninguna. Cada destino explica el motivo en error.
cancelled Cancelada antes de salir, o retirada de todas las redes.

Mientras no ha salido (borrador, programada, con error o cancelada) puedes cambiar cualquier cosa con PATCH /v1/posts/{id}. Lo que no envíes se mantiene; targets sustituye la lista entera.

Ventana de terminal
curl -X PATCH "https://api.usecrier.com/v1/posts/pst_7q1w0e" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Abrimos el viernes a las 10",
"scheduledFor": "2026-10-30T10:00:00+01:00"
}'

Con draft: false un borrador se publica: ahora, en scheduledFor o en la cola.

Una vez publicada, solo se puede cambiar el texto, y solo en las redes que lo permiten: X (cuentas Premium, durante la primera hora), Facebook, LinkedIn, YouTube, Pinterest, Google Business, Telegram, Discord y Reddit.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts/pst_7q1w0e/edit" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Texto corregido"
}'

Con requiresApproval: true la publicación queda en pending_approval: no sale hasta que alguien la apruebe. Si el espacio de trabajo exige aprobación (PATCH /v1/workspace con requireApproval: true, o desde Ajustes → Equipo en el panel), las de los miembros pasan siempre por aquí. Las de propietarios, admins y claves API no, salvo que lo pidan.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Nueva colección",
"scheduledFor": "2026-11-06T09:00:00+01:00",
"requiresApproval": true,
"targets": [
{
"accountId": "acc_ig"
}
]
}'

Un propietario, un admin o una clave API decide con POST /v1/posts/{id}/review. Al aprobarla se programa para su fecha, entra en la cola si la pidió o sale ya si su fecha pasó mientras esperaba. Al rechazarla vuelve a borrador con la nota, y tu webhook recibe post.rejected.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/posts/pst_7q1w0e/review" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"decision": "reject",
"note": "Cambia la foto de portada"
}'

Editarla mientras espera no la publica: sigue pendiente. Quien la escribió puede retirarla con POST /v1/posts/{id}/cancel.

Una publicación que funciona puede volver a salir sola: cada N semanas o meses, como una publicación nueva. Para cuando llega a maxCopies o pasa until, y las variations se usan por turnos para que no salga siempre el mismo texto.

Ventana de terminal
curl -X PUT "https://api.usecrier.com/v1/posts/pst_7q1w0e/recycling" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"every": 2,
"unit": "month",
"maxCopies": 6,
"variations": [
"Vuelve el clásico de otoño 🍂",
"Por si te lo perdiste: nuestro clásico de otoño"
]
}'
  • Cada copia es una publicación propia con recycledFrom, y tu webhook recibe post.recycled.
  • YouTube y TikTok no permiten repetir contenido: esas cuentas se quedan fuera de las copias.
  • Cada cuenta puede tener hasta 10 publicaciones reciclándose a la vez.
  • DELETE /v1/posts/{id}/recycling lo para; las copias ya creadas se quedan.

GET /v1/posts/{id}/metrics devuelve impresiones, alcance, reproducciones, me gusta, comentarios, compartidos, guardados y clics, en total y por cuenta. Llegan unos minutos después de publicar; hasta entonces devuelve null. Cada red da solo las suyas: las demás valen 0.

Guarda selecciones de cuentas (por ejemplo, “Todas las de Acme”) con POST /v1/account-groups y úsalas al importar un CSV o desde el panel.

Ventana de terminal
curl -X POST "https://api.usecrier.com/v1/account-groups" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Todas las de Acme",
"accountIds": [
"acc_ig",
"acc_li",
"acc_x"
]
}'
  • POST /v1/posts/{id}/unpublish la retira de todas las redes, o solo de accountId. Instagram y TikTok no lo permiten por API: hay que borrarla en la app.
  • DELETE /v1/posts/{id} la borra de Crier. Si sigue publicada, retírala antes.

© 2026 Crier by TWOFACES ·usecrier.com ·Panel ·soporte@twofacesco.com