Recettes curl pour l'API de cotes Pinnacle
Réponse : pointez curl vers https://pinnfeed.io avec l'en-tête x-api-key: $PINNFEED_KEY. Le contrat à jour est /openapi.json. Free (0 €, 30 s de retard, 2 sports) couvre tous les chemins ci-dessous sauf les cotes de clôture (Builder et plus).
Préparation#
export PINNFEED_KEY="ps_live_..."
alias pf='curl -sS -H "x-api-key: $PINNFEED_KEY" -H "accept: application/json"'
Compte et sports#
pf https://pinnfeed.io/v1/account | jq .
pf https://pinnfeed.io/v1/sports | jq '.sports[] | {id,slug,inPlan,live,prematch}'
Événements et cotes (paginés)#
# Moneylines football à venir, lignes principales
pf "https://pinnfeed.io/v1/odds?sport=soccer&market=moneyline&main=true&limit=20" | jq '.events | length'
# Page suivante
pf "https://pinnfeed.io/v1/odds?sport=soccer&market=moneyline&main=true&limit=20&offset=20" | jq .
# Une équipe (recherche texte sur domicile, extérieur ou ligue)
pf "https://pinnfeed.io/v1/odds?sport=soccer&q=marseille&main=true" | jq .
# Un événement avec ses marchés
pf "https://pinnfeed.io/v1/events/EVENT_ID?main=true" | jq .
Baisses et clôtures#
# Baisses de cote ≥ 5 % sur les 15 dernières minutes
pf "https://pinnfeed.io/v1/drops?sport=soccer&minutes=15&min_pct=5&limit=50" | jq .
# Clôtures d'une journée UTC (Builder et plus)
pf "https://pinnfeed.io/v1/closing?date=2026-11-08&sport=soccer&main=true&limit=50" | jq .
Erreurs fréquentes#
| HTTP | Sens |
|---|---|
| 400 | invalid_filter : sport ou marché inconnu |
| 401 | x-api-key absent ou invalide |
| 403 | Le plan n'inclut pas la ressource (par ex. Free sur /v1/closing) |
| 429 | rate_limited (avec Retry-After) ou daily_quota (Free : 1 000/jour) |
Pour du push plutôt que du polling : exemple Python WebSocket sur Builder (99 €/mois). Essai de 3 jours ; une carte est requise et elle est débitée après le jour 3 sauf annulation. Contenu éducatif pour adultes (18+).
Questions fréquentes#
curl fonctionne-t-il avec le plan Free ?#
Oui pour /v1/account, /v1/sports, /v1/events, /v1/odds et /v1/drops (30 s de retard, 2 sports, 1 000 requêtes/jour). Les clôtures demandent Builder ou Pro.
Et le WebSocket en ligne de commande ?#
Pas avec curl ; utilisez wscat : recette wscat.
Où est le fichier OpenAPI ?#
https://pinnfeed.io/openapi.json, à importer dans Postman, Insomnia ou openapi-generator.