Programmer un post
POST https://app.petitpanda.io/api/schedules
GET https://app.petitpanda.io/api/schedules/next-freeUne fois ton draft généré (via POST /generate-post ou créé dans l’app), tu peux le programmer pour publication automatique à une date / heure précise, ou laisser PetitPanda choisir le prochain slot libre dans ton calendrier de programmation récurrente.
Authentification
Scope requis : schedules:write.
POST /api/schedules
Programme un draft existant.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
draft_id | string | oui | ID du draft à programmer (retourné par /generate-post) |
platform | string | oui | Plateforme cible : linkedin, twitter, instagram, tiktok |
scheduled_at | string (ISO 8601) | conditionnel | Date / heure UTC de publication. Requis si use_next_free_slot est absent ou false |
use_next_free_slot | boolean | conditionnel | Si true, ignore scheduled_at et utilise le prochain slot libre pour la plateforme |
Exemple : date précise
cURL
curl -X POST https://app.petitpanda.io/api/schedules \
-H "Authorization: Bearer $PETITPANDA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"draft_id": "drft_8f3a1c2b9e7d4f5a",
"platform": "linkedin",
"scheduled_at": "2026-05-22T09:00:00Z"
}'Exemple : prochain slot libre
Tu as un calendrier récurrent configuré (ex : LinkedIn tous les jours à 9h et 18h) ? Laisse PetitPanda placer ton post au prochain slot libre.
curl -X POST https://app.petitpanda.io/api/schedules \
-H "Authorization: Bearer $PETITPANDA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"draft_id": "drft_8f3a1c2b9e7d4f5a",
"platform": "linkedin",
"use_next_free_slot": true
}'Réponse
201 Created
{
"schedule_id": "sch_b4e2d9f1a8c3e6b5",
"draft_id": "drft_8f3a1c2b9e7d4f5a",
"platform": "linkedin",
"scheduled_at": "2026-05-22T09:00:00Z",
"status": "pending",
"created_at": "2026-05-20T14:35:02Z"
}GET /api/schedules/next-free
Récupère le prochain slot libre pour une plateforme donnée, sans rien programmer. Pratique pour afficher la date prévue à l’utilisateur avant confirmation.
curl "https://app.petitpanda.io/api/schedules/next-free?platform=linkedin" \
-H "Authorization: Bearer $PETITPANDA_API_KEY"Réponse
{
"platform": "linkedin",
"next_free_slot": "2026-05-22T09:00:00Z",
"slot_label": "Lundi 22 mai, 09:00 UTC"
}Si aucun slot récurrent n’est configuré pour la plateforme, la réponse retourne next_free_slot: null. Configure tes slots via POST /api/schedule-slots ou depuis Calendrier > Slots récurrents .
Statuts d’une programmation
| Statut | Description |
|---|---|
pending | Programmé, en attente de publication |
publishing | Publication en cours côté plateforme |
published | Publication réussie. Le post est en ligne |
failed | Publication échouée (token expiré, contenu rejeté par la plateforme, etc.) |
Tu peux lister toutes tes programmations via GET /api/schedules (filtre ?status=pending ou ?platform=linkedin supporté).
Webhook de publication (optionnel)
Pour être notifié dès qu’un post passe en published ou failed, enregistre un webhook sur l’event post.published ou post.failed. Voir Webhooks.
use_next_free_slot: true, garde en tête que le slot peut être plusieurs jours plus tard si ton calendrier est dense. Appelle GET /schedules/next-free d’abord pour confirmer.Erreurs courantes
| Code | Cause |
|---|---|
400 | scheduled_at dans le passé, ou ni scheduled_at ni use_next_free_slot fournis |
403 | Scope schedules:write manquant |
404 | draft_id introuvable ou n’appartenant pas à ton compte |
409 | Conflit : un autre post est déjà programmé exactement à cette heure pour cette plateforme |
Et après ?
- Sois notifié à la publication : Webhooks
- Génère le draft à programmer : Générer un post