Importar desde un CSV
Una fila, una publicación. Hasta 50 filas por petición, y cada fila se comprueba por su cuenta.
El archivo
La primera fila son los nombres de las columnas. Separa con comas y pon entre comillas los textos que llevan comas o saltos de línea. Desde el panel puedes descargar una plantilla con las cuentas de tu perfil.
content,accounts,schedule_time,timezone,media_urls,first_comment
"Abrimos el lunes, ¡te esperamos!",acc_ig|acc_li,2026-11-02 09:00,Europe/Madrid,https://cdn.acme.com/tienda.jpg,#valencia
Idea para la semana que viene,acc_li,,,,Columnas
| Columna | Qué lleva |
|---|---|
content | El texto. Obligatorio salvo que haya media_urls. |
accounts | Ids de cuentas separados por |. |
group | O el nombre de un grupo de cuentas (se suma a accounts). |
schedule_time | 2026-11-02 09:00 con timezone, o una fecha ISO con zona. Vacío: se publica ya. |
timezone | Zona horaria IANA, por ejemplo Europe/Madrid. |
queue | true para el siguiente hueco de la cola. |
draft | true para guardarla como borrador. |
media_urls | URLs https separadas por |. El tipo sale de la extensión. |
first_comment | Primer comentario en Instagram, Facebook, LinkedIn, Threads y YouTube. |
instagram_format, facebook_format | feed, reel o story. |
youtube_title, youtube_visibility, youtube_playlist | Título, public/unlisted/private e id de lista. |
tiktok_privacy | Obligatoria con cuentas de TikTok: public, friends, followers o private. |
pinterest_title, pinterest_link, pinterest_board | Título, enlace y tablero del Pin. |
reddit_subreddit, reddit_title | Subreddit (sin r/) y título. |
google_cta_type, google_cta_url | Botón de Google Business y su enlace. |
Comprueba y luego importa
Con dryRun: true se revisa cada fila sin publicar nada. Después envía el mismo CSV sin dryRun: las filas válidas se crean y las demás vuelven con su error.
curl -X POST "https://api.usecrier.com/v1/posts/import" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"csv": "content,accounts\nHola,acc_ig",
"dryRun": true
}'const res = await fetch('https://api.usecrier.com/v1/posts/import', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CRIER_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"csv": "content,accounts\nHola,acc_ig",
"dryRun": true
}),
});
const { data } = await res.json();import os, requests
res = requests.post(
"https://api.usecrier.com/v1/posts/import",
headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},
json={
"csv": "content,accounts\nHola,acc_ig",
"dryRun": True
},
)
data = res.json()["data"]{
"data": {
"total": 2,
"valid": 1,
"invalid": 1,
"dryRun": true,
"unknownColumns": [],
"rows": [
{ "row": 1, "ok": true },
{ "row": 2, "ok": false, "error": "accounts: acc_old is not a connected account" }
]
}
}