Quickstart
De zéro à votre premier pin publié en quelques minutes.
1. Connectez votre compte Pinterest
Depuis le tableau de bord, ouvrez Comptes Pinterestet cliquez sur « Connecter un compte Pinterest ». Autorisez l'accès : Pincast gère ensuite les jetons pour vous.
2. Créez une clé API
Dans Clés API, créez une clé. Elle commence par pk_live_et n'est affichée qu'une seule fois — copiez-la immédiatement.
3. Récupérez vos comptes et tableaux
curl https://api.pincast.io/v1/accounts \
-H "Authorization: Bearer pk_live_VOTRE_CLE"
# Puis les tableaux du compte
curl https://api.pincast.io/v1/accounts/ACCOUNT_ID/boards \
-H "Authorization: Bearer pk_live_VOTRE_CLE"4. Publiez un pin
curl -X POST https://api.pincast.io/v1/pins \
-H "Authorization: Bearer pk_live_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{
"account_id": "ACCOUNT_ID",
"board_id": "BOARD_ID",
"image_url": "https://votre-cdn.com/image.jpg",
"title": "Mon premier pin"
}'
# Réponse : { "id": "...", "status": "queued", "publish_at": null }5. Suivez le statut
curl https://api.pincast.io/v1/pins/PIN_ID \
-H "Authorization: Bearer pk_live_VOTRE_CLE"
# status passe de "queued" à "published" avec pinterest_pin_idPour être notifié en temps réel plutôt que d'interroger l'API, configurez un webhook depuis le tableau de bord.
ℹ️ À savoir : un pin peut rester en statut queuedplus longtemps que prévu — c'est le pacing qui respecte les limites de l'API Pinterest. Le pin partira automatiquement, ne le re-soumettez pas. Si un pin reste bloqué plus d'une heure, contactez le support.
Vérifier la signature d'un webhook
Chaque livraison porte un header X-Pincast-Signature: t=<timestamp>,v1=<hmac>. Recalculez le HMAC-SHA256 de <timestamp>.<body>avec le secret de l'endpoint :
import crypto from "node:crypto";
function verify(rawBody, header, secret) {
const [t, v1] = header.split(",").map((p) => p.split("=")[1]);
const expected = crypto
.createHmac("sha256", secret)
.update(`${t}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}