PublicationsPublier une publication

Publications

Publier une publication

Une application live publie aussitôt, programme ou enregistre un brouillon ; en test, elle simule. Avec ?dry_run=true, tout est vérifié et rien n’est écrit.

POSThttps://api.sofia-post.com/api/v1/posts
POST/v1/posts

Cette requête agit sur votre vrai compte.

curl -X POST 'https://api.sofia-post.com/api/v1/posts' \
  -H "Authorization: Bearer $SOFIA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"establishmentId":"cmvy2k3m40001ms4rest00000","targets":[{"platform":"instagram","text":"Tarte tatin du jour","format":"post","accountId":"cmvy2k3m40001ms4rig000000"}],"scheduledAt":"2026-11-02T10:00:00.000Z"}'

Autorisations

  • Authorizationstringrequis

    Votre clé personnelle ou jeton d’accès OAuth, envoyé sous la forme Bearer <token>.

Paramètres de requête

  • dry_runstring

    true : exécute chaque contrôle que l’envoi ferait (règles des réseaux, comptes, médias, création, abonnement en ligne) et n’écrit rien. Renvoie 200 ready ou 422 post_refused.

    Valeurs autorisées : truefalse

En-têtes

  • Idempotency-Keystring

    Rejouée avec le même corps, la requête renvoie la même réponse sans créer de seconde publication. Une simulation ne consomme pas la clé.

Corps

application/json

  • establishmentIdstringrequis

    Établissement, dans le Workspace de l’autorisation du jeton (GET /v1/establishments)

  • targetsobject[]requis

    Un réseau par cible

    Afficher les attributs enfants
    • platformstringrequis

      Réseau visé

      Valeurs autorisées : instagramfacebookxlinkedintiktok

    • textstringrequis

      Légende publiée sur ce réseau

    • mediaobject[]

      Médias joints

      Afficher les attributs enfants
      • idstring

        Identifiant d’un média de la médiathèque de l’établissement (sinon url et type)

      • urlstring

        Adresse publique du média (https en live) ; sans identifiant

      • typestring

        Type du média donné par adresse

        Valeurs autorisées : imagevideo

    • formatstring

      Format (post, reel, story, carousel...) ; par défaut, celui que le réseau servirait

    • accountIdstring

      En live : le compte connecté qui publie, quand l’établissement en a plusieurs sur ce réseau (GET /v1/establishments/:id/accounts)

  • scheduledAtstring<date-time>

    Date de programmation (ISO 8601), dans le futur ; absente : publication immédiate. Interdite avec status draft

  • statusstring

    draft : un brouillon (en live seulement), créé sans date, rien n’est envoyé ; PATCH /v1/posts/:id le programme

    Valeurs autorisées : draft

Réponse

200application/json

Simulation : tous les contrôles sont passés.

  • statusstringrequis

    Toujours ready

    Valeurs autorisées : ready

  • dryRunbooleanrequis

    Toujours true

    Valeurs autorisées : true

  • targetsobject[]requis

    Les cibles vérifiées

    Afficher les attributs enfants
    • platformstringrequis

      Réseau de la cible

    • statestringrequis

      Toujours ready

      Valeurs autorisées : ready

    • accountIdstring

      En live : le compte qui publierait

    • handlestring

      En live : son identifiant affiché

201application/json

En ligne : publishing ou scheduled. Test : simulated.

  • idstringrequis

    Identifiant de la publication, à relire avec GET /v1/posts/:id

  • statusstringrequis

    État de la publication à la création

    Valeurs autorisées : draftpublishingscheduled

  • establishmentIdstringrequis

    Établissement de la publication

  • targetsobject[]requis

    Les cibles de la publication

    Afficher les attributs enfants
    • platformstringrequis

      Réseau de la cible

    • accountIdstringrequis

      Le compte qui publie

    • statestringrequis

      État de la cible à la création

      Valeurs autorisées : draftpublishingscheduledfailed

  • scheduledAtstring<date-time>

    Moment où la publication doit paraître

400

Corps mal formé.

401

Le jeton est absent, inconnu, expiré ou révoqué.

402

subscription_required (en ligne, simulation comprise).

403

Le jeton n’a pas la permission posts:write.

404

establishment_not_found : hors du Workspace du jeton.

422application/json

post_refused : un réseau, l’établissement ou la création refuserait ; media_import_refused (en ligne) avec sa raison ; idempotency_key_reused.

4XXapplication/json

Toute autre erreur, dans l’enveloppe d’erreur.