CLI
Gérer les publications
Créez, programmez, listez, modifiez et supprimez des posts depuis le terminal : brouillons, plusieurs réseaux, médias, essais à blanc et corps JSON complet.
Chaque post appartient à un établissement : vous passez son id avec -e. Trouvez-le avec sofia establishments:list (voir comptes).
Créer des posts
Publier un post
Sans date, le post part tout de suite.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"Options
| Option | Rôle |
|---|---|
-e, --establishment | L’id de l’établissement (obligatoire, sauf avec --json). |
-p, --platforms | Les réseaux, séparés par des virgules (instagram,facebook,x,linkedin,tiktok) ; obligatoire, sauf avec --json. |
-c, --content | Le texte du post. |
-s, --date | La date de programmation (ISO 8601) ; sans elle, le post part tout de suite. |
-m, --media | Des ids de médias ou des adresses https, séparés par des virgules. |
-f, --format | Le format : post, reel, story, carousel… |
-a, --account | Le compte connecté depuis lequel publier. |
--draft | Enregistre un brouillon que rien n’envoie. |
--dry-run | Vérifie le post sans rien écrire. |
--idempotency-key | Rejoue la même requête comme une seule. |
-j, --json | Un fichier qui porte le corps complet ; il remplace les options de contenu. |
Programmer un post
Passez une date ISO 8601 avec -s, --date.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" -s 2026-11-07T09:00:00ZEnregistrer un brouillon
--draft enregistre le post sans le publier ni le programmer.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draftAjouter des médias
-m, --media accepte des ids de médias de votre médiathèque ou des adresses https, séparés par des virgules.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
-m $MEDIA_ID,https://images.example.com/tarte-tatin.jpgPour une adresse, le type se déduit de l’extension : vidéo pour mp4, mov, webm et m4v, image sinon. Pour envoyer avant, voir médias.
Plusieurs réseaux à la fois
Listez les réseaux séparés par des virgules dans -p, --platforms. Chacun reçoit le même texte.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"Essai à blanc
--dry-run vérifie le post selon les règles de chaque réseau et ne publie rien. Voir Essai à blanc.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" --dry-runIdempotence
Relancez une commande sans risque avec --idempotency-key : la même clé donne le même post, jamais deux. Voir Idempotence.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
--idempotency-key brunch-2026-11-07Corps complet depuis un fichier
Pour un texte par réseau, plusieurs médias ou une programmation d’un coup, écrivez tout le corps dans un fichier et passez-le avec -j, --json. Il remplace les options de contenu.
sofia posts:create --json post.json{
"establishmentId": "$ESTABLISHMENT_ID",
"targets": [
{
"platform": "instagram",
"text": "Tarte tatin du jour",
"media": [{ "id": "$MEDIA_ID" }],
"format": "post"
},
{
"platform": "tiktok",
"text": "Tarte tatin du jour",
"media": [{ "url": "https://images.example.com/tarte-tatin.mp4", "type": "video" }]
}
],
"scheduledAt": "2026-11-07T09:00:00Z",
"status": "scheduled"
}Lister les posts
Filtrez la liste avec ces options. La réponse est paginée : voir Pagination.
-e, --establishment: seulement cet établissement.--status: seulement les posts de ce statut.--limitet--cursor: la taille de page et l’endroit où reprendre.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --limit 20Filtrer par période
--from et --to : une plage de dates.
sofia posts:list -e $ESTABLISHMENT_ID --from 2026-11-01 --to 2026-11-30Filtrer par auteur
--created-by me|app : les posts écrits par vous, ou créés via l’API.
sofia posts:list -e $ESTABLISHMENT_ID --created-by appLire et modifier un post
posts:update change la date (-s), le statut (draft ou scheduled), ou tout le corps avec -j.
sofia posts:get $POST_ID
sofia posts:update $POST_ID -s 2026-11-08T09:00:00Z
sofia posts:update $POST_ID --json post.jsonChanger le statut d’un post
posts:update --status fait passer un post de brouillon à programmé, et inversement.
sofia posts:update $POST_ID --status draft
sofia posts:update $POST_ID --status scheduled -s 2026-11-08T09:00:00Z--status scheduled -s <date>programme un brouillon à cette date.--status draftramène un post programmé en brouillon : il garde son contenu, perd sa date et ne partira plus.
Supprimer un post
sofia posts:delete $POST_IDScripter avec jq
La sortie étant du JSON, jq extrait ce qu’il vous faut : ids, statuts, curseur de la page suivante.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'