Skip to content

Prédiction

Les exemples utilisent $SPAVIK_BASE_URL et $SPAVIK_API_KEY, définis dans Démarrer.

POST /v1/forecast

Prévoir une série temporelle (sans entraînement)

Facturé un crédit par pas d'horizon et par série : cinq séries sur 7 pas coûtent 35 crédits, en un appel comme en cinq. L'appel est refusé (402 CREDITS_EXHAUSTED) avant tout calcul quand horizon x séries dépasse ce qui reste.

Plusieurs séries (item_id) sont prévues indépendamment, chacune sur son seul historique : les grouper économise des allers-retours mais ne change ni le prix ni les valeurs, et une série n'apprend pas d'une autre.

Authentification : Clé d'usage (X-API-Key) ou session web (Authorization: Bearer)

TIP

Accepte Idempotency-Key : rejouer le même appel avec la même clé rend la réponse déjà calculée, sans nouveau débit.

Corps de la requête

NomTypeDescription
targetstringrequis
horizonintegerfacultatifNombre de pas futurs (alias : prediction_length).
dataobject[]requisLes lignes de données, un objet par ligne.
timestampstringfacultatifColonne d'horodatage (déduite si omise).
quantilesnumber[]facultatif
item_idstringfacultatifColonne qui distingue plusieurs séries. Chaque série est prévue sur son seul historique.
point_estimatemean | medianfacultatifStatistique servie dans <target>_prediction (la moyenne par défaut).

Cette route accepte aussi multipart/form-data, pour téléverser un fichier plutôt que de sérialiser les lignes en JSON.

Réponses

CodeDescription
200Succès
400Série ou horizon invalide (INVALID_INPUT : moins de dix points, pas irrégulier, cible illisible).
401Authentification requise, ou jeton invalide.
402Plus de prédictions : le volume mensuel et le solde sont épuisés.
403Cet appelant n'est pas autorisé à faire cette action.
413Corps de requête trop volumineux.
422FORECAST_FAILED : le calcul lui-même a échoué.

Exemple

sh
curl -X POST "$SPAVIK_BASE_URL/v1/forecast" \
  -H 'X-API-Key: sk-spv-api-...' \
  -H 'Content-Type: application/json' \
  -d '{
  "target": "ventes",
  "horizon": 7,
  "data": [
    {
      "date": "2026-07-01",
      "ventes": 100
    },
    {
      "date": "2026-07-02",
      "ventes": 112
    },
    {
      "date": "2026-07-03",
      "ventes": 118
    },
    {
      "date": "2026-07-04",
      "ventes": 121
    },
    {
      "date": "2026-07-05",
      "ventes": 130
    },
    {
      "date": "2026-07-06",
      "ventes": 84
    },
    {
      "date": "2026-07-07",
      "ventes": 72
    },
    {
      "date": "2026-07-08",
      "ventes": 105
    },
    {
      "date": "2026-07-09",
      "ventes": 117
    },
    {
      "date": "2026-07-10",
      "ventes": 123
    },
    {
      "date": "2026-07-11",
      "ventes": 126
    },
    {
      "date": "2026-07-12",
      "ventes": 135
    },
    {
      "date": "2026-07-13",
      "ventes": 89
    },
    {
      "date": "2026-07-14",
      "ventes": 77
    },
    {
      "date": "2026-07-15",
      "ventes": 110
    },
    {
      "date": "2026-07-16",
      "ventes": 122
    },
    {
      "date": "2026-07-17",
      "ventes": 128
    },
    {
      "date": "2026-07-18",
      "ventes": 131
    },
    {
      "date": "2026-07-19",
      "ventes": 140
    },
    {
      "date": "2026-07-20",
      "ventes": 94
    },
    {
      "date": "2026-07-21",
      "ventes": 82
    },
    {
      "date": "2026-07-22",
      "ventes": 115
    },
    {
      "date": "2026-07-23",
      "ventes": 127
    },
    {
      "date": "2026-07-24",
      "ventes": 133
    },
    {
      "date": "2026-07-25",
      "ventes": 136
    },
    {
      "date": "2026-07-26",
      "ventes": 145
    },
    {
      "date": "2026-07-27",
      "ventes": 99
    },
    {
      "date": "2026-07-28",
      "ventes": 87
    }
  ]
}'

POST /v1/forecast/backtest

Vérifier qu'une série se prête à la prévision

Ne crée rien, ne facture rien. Valide la série (longueur, pas régulier, horodatages en double, cible numérique) et, si elle tient, rejoue des fenêtres de l'historique pour noter ce que le moteur aurait prédit face à ce qui est arrivé.

verdict.level vaut usable ou no_signal, décidé sur le MASE face à la référence naïve, jamais sur le seuil fixe de 1. by_window dit si le modèle est régulier, ce qu'une moyenne cache.

Les valeurs prévues ne sortent jamais d'ici : la prévision est facturée, cette route est gratuite. Utilisez POST /v1/forecast pour les obtenir.

Authentification : Clé d'usage (X-API-Key) ou session web (Authorization: Bearer)

Corps de la requête

NomTypeDescription
targetstringrequis
horizonintegerfacultatifNombre de pas futurs (alias : prediction_length).
dataobject[]requisLes lignes de données, un objet par ligne.
timestampstringfacultatifColonne d'horodatage (déduite si omise).
quantilesnumber[]facultatif
item_idstringfacultatifColonne qui distingue plusieurs séries. Chaque série est prévue sur son seul historique.
point_estimatemean | medianfacultatifStatistique servie dans <target>_prediction (la moyenne par défaut).

Cette route accepte aussi multipart/form-data, pour téléverser un fichier plutôt que de sérialiser les lignes en JSON.

Réponses

CodeDescription
200Succès
400Série illisible, cible ou horodatage manquant, ou horizon qui n'est pas un entier de 1 à 1000 (VALIDATION_ERROR).
401Authentification requise, ou jeton invalide.
403Cet appelant n'est pas autorisé à faire cette action.

Exemple

sh
curl -X POST "$SPAVIK_BASE_URL/v1/forecast/backtest" \
  -H 'X-API-Key: sk-spv-api-...' \
  -H 'Content-Type: application/json' \
  -d '{
  "target": "ventes",
  "horizon": 7,
  "data": [
    {
      "date": "2026-07-01",
      "ventes": 100
    },
    {
      "date": "2026-07-02",
      "ventes": 112
    },
    {
      "date": "2026-07-03",
      "ventes": 118
    },
    {
      "date": "2026-07-04",
      "ventes": 121
    },
    {
      "date": "2026-07-05",
      "ventes": 130
    },
    {
      "date": "2026-07-06",
      "ventes": 84
    },
    {
      "date": "2026-07-07",
      "ventes": 72
    },
    {
      "date": "2026-07-08",
      "ventes": 105
    },
    {
      "date": "2026-07-09",
      "ventes": 117
    },
    {
      "date": "2026-07-10",
      "ventes": 123
    },
    {
      "date": "2026-07-11",
      "ventes": 126
    },
    {
      "date": "2026-07-12",
      "ventes": 135
    },
    {
      "date": "2026-07-13",
      "ventes": 89
    },
    {
      "date": "2026-07-14",
      "ventes": 77
    },
    {
      "date": "2026-07-15",
      "ventes": 110
    },
    {
      "date": "2026-07-16",
      "ventes": 122
    },
    {
      "date": "2026-07-17",
      "ventes": 128
    },
    {
      "date": "2026-07-18",
      "ventes": 131
    },
    {
      "date": "2026-07-19",
      "ventes": 140
    },
    {
      "date": "2026-07-20",
      "ventes": 94
    },
    {
      "date": "2026-07-21",
      "ventes": 82
    },
    {
      "date": "2026-07-22",
      "ventes": 115
    },
    {
      "date": "2026-07-23",
      "ventes": 127
    },
    {
      "date": "2026-07-24",
      "ventes": 133
    },
    {
      "date": "2026-07-25",
      "ventes": 136
    },
    {
      "date": "2026-07-26",
      "ventes": 145
    },
    {
      "date": "2026-07-27",
      "ventes": 99
    },
    {
      "date": "2026-07-28",
      "ventes": 87
    }
  ]
}'

POST /v1/models/{id}/predict

Scorer des lignes avec un modèle entraîné

Authentification : Clé d'usage (X-API-Key) ou session web (Authorization: Bearer)

TIP

Accepte Idempotency-Key : rejouer le même appel avec la même clé rend la réponse déjà calculée, sans nouveau débit.

Corps de la requête

NomTypeDescription
rowsobject[]requisLes lignes de données, un objet par ligne.

Cette route accepte aussi multipart/form-data, pour téléverser un fichier plutôt que de sérialiser les lignes en JSON.

Réponses

CodeDescription
200Succès
401Authentification requise, ou jeton invalide.
402Plus de prédictions : le volume mensuel et le solde sont épuisés.
403Cet appelant n'est pas autorisé à faire cette action.
409Modèle pas encore entraîné.
413Corps de requête trop volumineux.

Exemple

sh
curl -X POST "$SPAVIK_BASE_URL/v1/models/{id}/predict" \
  -H 'X-API-Key: sk-spv-api-...' \
  -H 'Content-Type: application/json' \
  -d '{
  "rows": [
    {
      "plan": "free",
      "seats": 2,
      "tickets_90d": 7
    }
  ]
}'

GET /v1/models/{id}/predictions

Historique des prédictions du modèle

Authentification : Clé d'usage (X-API-Key) ou session web (Authorization: Bearer)

Paramètres

NomTypeDescription
limitqueryintegerfacultatif

Réponses

CodeDescription
200Succès
401Authentification requise, ou jeton invalide.
403Cet appelant n'est pas autorisé à faire cette action.
503PREDICTION_HISTORY_UNAVAILABLE : le journal (BigQuery) n'a pas pu être lu.

Exemple

sh
curl -X GET "$SPAVIK_BASE_URL/v1/models/{id}/predictions" \
  -H 'X-API-Key: sk-spv-api-...'

Documentation générée pour partie depuis le contrat OpenAPI.