Requêtes asynchrones
Mettez en file d'attente les requêtes d'inférence prises en charge et récupérez leur résultat complet via le Partner API.
Requêtes asynchrones
Le mode asynchrone de Model Gate stocke une tâche d'inférence dans la file d'attente durable MariaDB et renvoie immédiatement un ID de demande. Indépendant sub2proxy les travailleurs réclament des travaux en file d'attente avec des baux, et les baux abandonnés peuvent être récupérés après un redémarrage du processus. Le résultat terminé est lu à partir du Partner API ou transmis au rappel configuré dans le profil.
Le mode asynchrone est pris en charge pour :
POST /v1/chat/completionsPOST /v1/messagesPOST /v1/responsesPOST /v1/images/generations
Les requêtes asynchrones ne peuvent pas utiliser stream: true.
Demande de file d'attente
Ajouter l'extension Model Gate "async": true à une demande par ailleurs valable.
Demande
curl https://api.model-gate.com/v1/responses \
-H "Authorization: Bearer mg_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "Write a short release summary.",
"async": true,
"stream": false
}'
Réponse — 202
{
"request_id": "01KZ...",
"status": "queued",
"result_url": "https://p-api.model-gate.com/api/v1/requests/01KZ..."
}
Le async Le champ est supprimé avant que la demande ne soit envoyée en amont. Un alias de modèle est résolu en son modèle canonique avant que la tâche ne soit mise en file d'attente. Le travailleur revalide la clé et exécute via le même noyau de requête/de comptabilité Model Gate en tant qu'inférence synchrone. Les lignes de file d'attente ne contiennent aucun secret de clé API. La tarification asynchrone native est inchangée et n'utilise pas le coefficient de prix de la demande par lots.
Avant qu'un travailleur réclame un article, il vérifie le solde actuel du compte et l'utilisation actuelle des dépenses de clé/groupe réinitialisable dans MariaDB. Si le solde du compte n'est pas positif ou si une limite de dépenses de clé/groupe configurée est déjà épuisée, l'article reste queued et ne consomme pas de tentative d'exécution. Une recharge ultérieure, une réinitialisation de l'utilisation ou une augmentation de la limite rend l'article automatiquement éligible. Model Gate ne réserve pas d'estimation du coût de la demande : les travaux déjà admis sont autorisés à se terminer et à régler leur coût réel total, même lorsque des travaux simultanés rendent le solde final négatif ou dépassent légèrement une limite de dépenses. Les nouvelles exécutions sont alors bloquées jusqu'à ce que le compte soit à nouveau éligible.
Sémantique de récupération
La file d'attente durable fournit récupération au moins une fois, pas une exécution exactement une fois. Si un processus de travail s'arrête après qu'un fournisseur en amont a accepté une demande mais avant que Model Gate ne stocke durablement le résultat asynchrone, le bail finit par expirer et un autre travailleur peut réessayer le même ID de demande Model Gate. Le règlement est protégé contre le double débit, mais les applications qui provoquent des effets secondaires externes via des outils de modélisation devraient rendre ces effets secondaires idempotents.
Récupérer le résultat
Utilisez une clé Partner API appartenant au même compte Model Gate.
Demande
curl https://p-api.model-gate.com/api/v1/requests/01KZ... \
-H "Authorization: Bearer mg_partner_..."
Réponse — traitement
{
"data": {
"request_id": "01KZ...",
"status": "processing",
"created_at": "2026-08-05 10:00:00",
"started_at": "2026-08-05 10:00:01",
"completed_at": null,
"expires_at": "2026-08-06 10:00:00"
}
}
Réponse — complétée
{
"data": {
"request_id": "01KZ...",
"status": "completed",
"response_status": 200,
"response_headers": {
"content-type": ["application/json"]
},
"response": {
"id": "resp_...",
"object": "response",
"status": "completed"
},
"created_at": "2026-08-05 10:00:00",
"started_at": "2026-08-05 10:00:01",
"completed_at": "2026-08-05 10:00:03",
"expires_at": "2026-08-06 10:00:00"
}
}
Le point de terminaison du résultat renvoie le corps complet stocké en amont jusqu'à ce que expires_at. Un ID de demande étranger, expiré ou inconnu est renvoyé 404.
Erreurs
{
"error": {
"type": "invalid_request_error",
"code": "invalid_async_stream_combination",
"message": "Async requests cannot be streamed."
}
}
Retour de points de terminaison non pris en charge async_not_supported.
Rappels
Les résultats asynchrones terminés sont mis en file d’attente de manière durable pour être envoyés à l’URL de rappel configurée dans le profil. La livraison de rappel a sa propre file d'attente de travail/nouvelles tentatives et n'attend donc pas une autre demande d'API modèle. La maintenance rapproche également les lignes asynchrones du terminal dans l'historique des demandes et récupère un rappel d'achèvement manquant après un crash de travailleur. Voir Rappels pour la vérification de la signature, les tentatives et les conseils en matière d'idempotence.