spirkzspirkz

Intégrations

Publie sur spirkz depuis n'importe quel planificateur

L'API d'intégrations permet aux planificateurs tiers — Zapier, Metricool, Buffer et consorts — de soumettre des vidéos à spirkz au nom d'un créateur. Une vidéo envoyée ici suit les mêmes règles et la même file de revue qu'une vidéo importée dans l'appli.

URL de base
https://server.spirkz.com/api/v1/integrations

Comment ça marche

  1. 1

    Le créateur crée une clé API dans l'appli spirkz et la colle dans le planificateur.

  2. 2

    Le planificateur appelle POST /videos avec un videoUrl public et les détails. spirkz répond 202 immédiatement.

  3. 3

    spirkz télécharge le fichier en arrière-plan, le stocke et crée une soumission en attente pour le créateur.

  4. 4

    L'équipe spirkz l'examine. Si elle est approuvée et que scheduledAt est encore à venir, elle est mise en ligne à cette heure ; sinon, elle est mise en ligne immédiatement.

  5. 5

    Le planificateur interroge GET /videos/:id pour suivre l'avancement.

Authentification

Envoie la clé du créateur à chaque requête. Une clé manquante, inconnue ou révoquée renvoie 401. Les clés agissent au nom du créateur qui les a émises.

Authorization: Bearer spk_...

Limites de débit, par clé

600

requêtes par heure, au total

30

appels POST /videos par heure

Endpoints

GET/me

Test de connexion. Appelle-le juste après que le créateur a collé sa clé.

{ "user": { "id", "name", "username" }, "keyName" }
GET/categoriesGET/languages

Données pour tes sélecteurs : categoryIds valides (catégories actives ; ?locale= pour les noms) et valeurs de languageSlug.

POST/videos

Soumettre une vidéo. Le corps est du JSON :

ChampRègles
videoUrlObligatoirehttps, accessible publiquement, ≤ 2000 car. mp4 / mov / webm / avi, ≤ 500 Mo. Les adresses privées ou internes sont refusées.
sourceObligatoireQui envoie, p. ex. "zapier", "metricool". ≤ 50 car., stocké en minuscules.
nameObligatoire≤ 150 car.
categoryIdsObligatoire1 à 5 ids issus de GET /categories.
descriptionFacultatif≤ 500 car.
languageSlugFacultatifIssu de GET /languages. Par défaut en.
tagFacultatifTableau de chaînes, jusqu'à 10 tags, chacun ≤ 40 car.
durationFacultatifSecondes, entier non négatif.
scheduledAtFacultatifISO 8601. Au moins 10 minutes et au plus 60 jours à l'avance. Omis ou null = en ligne dès l'approbation.
  • 202 — data.video avec status: "received".
  • 400 / 404 — un champ est invalide. Rien n'est stocké.
  • 409 — le créateur a déjà 10 vidéos en attente de soumission ou de revue (y compris celles en cours de téléchargement).
GET/videosGET/videos/:id

Les vidéos d'intégration du créateur, de la plus récente à la plus ancienne (?limit, ?offset), ou une seule par id.

{
  "id": "...",
  "source": "zapier",
  "video_url": "https://...",
  "status": "submitted",
  "error": null,
  "created_at": "...",
  "updated_at": "...",
  "userVideo": {
    "id": "...",
    "name": "...",
    "status": "pending",
    "scheduled_at": "2026-10-10T09:00:00.000Z",
    "decline_reason": null,
    "publishedVideoId": null
  }
}

Suivre une vidéo

Téléchargement — status

receivedprocessingsubmittedoufailed

En cas de failed, la raison se trouve dans error.

Revue — userVideo.status

pendingscheduledapprovedoudeclined

publishedVideoId est renseigné une fois la vidéo en ligne. Une vidéo refusée porte un decline_reason.

Exemple

curl -X POST https://server.spirkz.com/api/v1/integrations/videos \
  -H "Authorization: Bearer spk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrl": "https://example.com/clip.mp4",
    "source": "zapier",
    "name": "Morning routine",
    "categoryIds": ["<category id>"],
    "description": "Day 1",
    "scheduledAt": "2026-10-10T09:00:00Z"
  }'

Prise en charge native

N'importe quel planificateur peut s'intégrer aux endpoints ci-dessus. Ces outils prennent déjà spirkz en charge d'office :

Tu construis une intégration ?

Dis-nous ce que tu fabriques et on t'aidera à la livrer.

Écris-nous