Skip to main content
POST
BaseURL : la BaseURL par défaut est https://direct.evolink.ai, qui offre une meilleure prise en charge des modèles textuels et des connexions de longue durée. https://api.evolink.ai est le point de terminaison principal pour les services multimodaux et sert d’adresse de repli pour les modèles textuels.
Appelez GLM au format Responses pour les conversations textuelles, le streaming et les appels de fonctions. La compréhension d’images et la recherche web dépendent du modèle. Les paramètres et différences sont présentés ci-dessous.

Modèles et différences de paramètres

Choisissez un modèle GLM. Les quatre acceptent du texte sur cet endpoint. Les fonctions optionnelles varient selon le modèle. Responses utilise reasoning.effort imbriqué, au lieu de reasoning_effort ou thinking à la racine. Les tokens de réflexion sont inclus dans output_tokens. Une tâche simple peut renvoyer reasoning_tokens=0 ; cela ne signifie pas que la réflexion peut être désactivée. Effort de raisonnement ; low est recommandé. Règles de compatibilité de glm-5.3 / glm-5.3-flash / glm-5.3-flashx minimal et none ne désactivent pas la réflexion de la série 5.3. Les tokens de réflexion sont facturés en sortie. Les valeurs inconnues restent inchangées, sans correspondance de compatibilité ; utilisez les valeurs indiquées. Ces correspondances ne s’appliquent pas à glm-5.2. Sur cet endpoint, glm-5.2 peut encore produire des tokens de réflexion avec none. Cette valeur ne garantit pas la désactivation de la réflexion.

Prompts système et conversations à plusieurs tours

instructions: Instructions système. glm-5.3-flash accepte ce champ lorsque input est une chaîne. Avec un tableau de messages, placez le prompt système dans le premier message role=system.
Enregistre la réponse pour la référencer ensuite. glm-5.3-flash et glm-5.3-flashx permettent de poursuivre avec store=true et previous_response_id. glm-5.2 ne permet pas la continuation par identifiant ; store=true ne l’active pas. Incluez plutôt l’historique complet dans input. id à la racine de la réponse précédente. glm-5.3-flash et glm-5.3-flashx l’acceptent avec store=true et le même modèle. Transmettez cet id sans modification, et non l’id d’un élément output. glm-5.2 renvoie 400 pour ce champ. Pour changer de modèle, omettez-le et incluez l’historique complet dans input.

Réponses en streaming

Active le streaming SSE. Lisez le texte dans delta des événements response.output_text.delta. L’événement final de réussite est response.completed. Terminez aussi le tour et traitez response.incomplete, response.failed ou error. N’attendez pas uniquement [DONE] ou la fermeture de la connexion. Arrêtez la lecture après un événement final. HTTP 200 indique seulement que le flux est établi ; vérifiez l’état final de l’événement. Un tour d’appel d’outil peut finir par response.completed tout en nécessitant l’exécution de la fonction et une nouvelle requête par votre application.

Appels de fonctions

Choisissez l’exemple de fonction dans le menu des requêtes. Responses utilise une définition de fonction à plat :
  1. Parcourir response.output et récupérer tous les éléments type=function_call.
  2. Analyser et valider la chaîne JSON arguments, puis exécuter chaque fonction dans votre application.
  3. Ajouter tout le précédent output à l’historique. Ajouter un function_call_output par appel avec le call_id d’origine et un output de type chaîne.
  4. Envoyer l’historique mis à jour comme input de la requête suivante. L’exemple de retour de résultat illustre cette structure.
parallel_tool_calls: Autorise plusieurs appels d’outils dans un tour. false ne garantit pas un seul appel de fonction. Le client doit parcourir et traiter tous les function_call.

Images, recherche et sortie JSON

Pour glm-5.3-flash et glm-5.3-flashx, mélangez input_text et input_image dans le tableau content du message utilisateur. image_url reçoit une URL publique d’image ou une Data URL Base64. Utilisez uniquement du texte avec glm-5.3 et glm-5.2. Déclarez tools: [{"type":"web_search"}]. La recherche est exécutée sur le serveur et renvoie des éléments web_search_call et du texte. Vérifiez les éléments de sortie pour savoir si elle a été utilisée. Des frais par recherche peuvent s’ajouter aux tokens ; consultez les tarifs du modèle. Pour poursuivre après une recherche, ajoutez l’intégralité du output précédent, y compris web_search_call et message, à input, puis ajoutez votre nouvelle question. Conservez les champs originaux tels que id, status et action. La recherche a déjà été exécutée par le serveur : ne créez pas de function_call_output pour web_search_call. Consultez l’exemple de requête web_search_history. text.format.type: Format de sortie : text pour du texte, json_object pour un objet JSON. Avec json_object, demandez explicitement du JSON valide dans le prompt, puis analysez et validez la réponse côté client. Les contraintes JSON Schema strictes ne sont pas proposées ; json_schema ou strict=true ne garantissent pas une structure précise.

Réponses et utilisation

Éléments de sortie ordonnés. Extrayez text des entrées content de type output_text dans les éléments type=message. reasoning peut précéder la réponse ; un tour function_call peut n’avoir aucun texte de réponse. Ne lisez pas systématiquement output[0]. output_text: Texte de réponse agrégé facultatif ; il peut être absent. Les clients génériques doivent parcourir output. output_text dans un élément message ; éventuellement reasoning_text dans un élément reasoning. La réflexion peut aussi être renvoyée via summary_text. Un élément reasoning n’a pas nécessairement de champ content.
  • usage.input_tokens: Total des tokens d’entrée, y compris ceux du cache. usage.input_tokens_details.cached_tokens: Sous-ensemble des tokens d’entrée trouvé dans le cache ; ne l’ajoutez pas de nouveau à input_tokens. Le cache de préfixe est automatique, sans cache_control explicite. Le nombre de tokens concernés est celui renvoyé dans la réponse.
  • usage.output_tokens: Total des tokens de sortie, réflexion comprise. usage.output_tokens_details.reasoning_tokens: Sous-ensemble des tokens de sortie consacré à la réflexion ; ne le comptez pas de nouveau dans output_tokens. Cette valeur peut être absente ou nulle.
status=incomplete avec incomplete_details.reason=max_output_tokens signifie que le budget est épuisé. Il peut y avoir de la réflexion sans réponse ; augmentez la limite de sortie.

Autorisations

Authorization
string
header
requis

Transmettez Bearer YOUR_API_KEY dans l’en-tête Authorization.

Corps

application/json
model
enum<string>
défaut:glm-5.3-flash
requis

Choisissez un modèle GLM. Les quatre acceptent du texte sur cet endpoint. Les fonctions optionnelles varient selon le modèle.

Options disponibles:
glm-5.3,
glm-5.3-flash,
glm-5.3-flashx,
glm-5.2
Exemple:

"glm-5.3-flash"

input
requis

Obligatoire. Chaîne de texte ou tableau d’éléments d’entrée Responses. Le tableau accepte des messages, des éléments de sortie du modèle renvoyés tels quels et function_call_output. Pour plusieurs échanges, incluez l’historique complet à chaque requête. Placez le prompt système en premier avec role=system. Les images utilisent input_image, uniquement avec glm-5.3-flash et glm-5.3-flashx. N’utilisez pas le format de blocs messages / image_url de Chat Completions.

Exemple:

"Présente-toi en une phrase."

max_output_tokens
integer

Nombre maximal de tokens de sortie de cette génération, réflexion comprise. Commencez à 1024 et adaptez à la tâche. Un budget trop faible peut être épuisé pendant la réflexion et produire uniquement des éléments reasoning, sans réponse. Vérifiez status et incomplete_details. Le paramètre s’appelle max_output_tokens, pas max_tokens.

Plage requise: x >= 1
Exemple:

1024

stream
boolean
défaut:false

Active le streaming SSE. Lisez le texte dans delta des événements response.output_text.delta. L’événement final de réussite est response.completed. Terminez aussi le tour et traitez response.incomplete, response.failed ou error. N’attendez pas uniquement [DONE] ou la fermeture de la connexion.

reasoning
object

Responses utilise reasoning.effort imbriqué, au lieu de reasoning_effort ou thinking à la racine. Les tokens de réflexion sont inclus dans output_tokens. Une tâche simple peut renvoyer reasoning_tokens=0 ; cela ne signifie pas que la réflexion peut être désactivée.

instructions
string

Instructions système. glm-5.3-flash accepte ce champ lorsque input est une chaîne. Avec un tableau de messages, placez le prompt système dans le premier message role=system.

tools
object[]

Accepte les outils function côté client et web_search côté serveur. Déclarez une fonction avec name / description / parameters à plat, sans objet function imbriqué comme dans Chat Completions. Votre application exécute function_call et renvoie son résultat. web_search s’exécute sur le serveur ; les recherches effectuées peuvent être facturées par appel en plus des tokens. Consultez les tarifs du modèle.

tool_choice

auto laisse le modèle choisir ; none désactive les outils ; required impose un appel d’outil. Pour une fonction précise : {"type":"function","name":"get_temperature"}. La sélection forcée n’est pas garantie de fonctionner de la même façon pour toutes les combinaisons de modèles et d’outils.

Options disponibles:
auto,
none,
required
Exemple:

"auto"

parallel_tool_calls
boolean

Autorise plusieurs appels d’outils dans un tour. false ne garantit pas un seul appel de fonction. Le client doit parcourir et traiter tous les function_call.

text
object

Format de sortie. Les exemples utilisent json_object ; HTTP 200 ne garantit pas la conformité à un schéma JSON.

store
boolean

Enregistre la réponse pour la référencer ensuite. glm-5.3-flash et glm-5.3-flashx permettent de poursuivre avec store=true et previous_response_id. glm-5.2 ne permet pas la continuation par identifiant ; store=true ne l’active pas. Incluez plutôt l’historique complet dans input.

previous_response_id
string

id à la racine de la réponse précédente. glm-5.3-flash et glm-5.3-flashx l’acceptent avec store=true et le même modèle. Transmettez cet id sans modification, et non l’id d’un élément output. glm-5.2 renvoie 400 pour ce champ. Pour changer de modèle, omettez-le et incluez l’historique complet dans input.

Exemple:

"Identifiant de réponse renvoyé au tour précédent"

metadata
object

Métadonnées personnalisées sous forme de paires de chaînes clé-valeur, disponibles dans metadata de la réponse. N’y incluez ni clés secrètes ni données sensibles.

Exemple:
temperature
number

Paramètre d’échantillonnage. Sa plage effective et son effet dépendent du modèle. Il ne garantit pas une sortie déterministe et peut être omis pour les tâches de raisonnement.

top_p
number

Paramètre d’échantillonnage. Sa plage effective et son effet dépendent du modèle. Il peut généralement être omis.

Réponse

Génération terminée ou résultat incomplet ; vérifiez status. Le streaming renvoie text/event-stream.

id
string

Identifiant de cette réponse. À transmettre sans modification dans previous_response_id.

Exemple:

"response_demo"

object
string
Allowed value: "response"
created_at
integer

Date de création en secondes Unix.

model
string
Exemple:

"glm-5.3-flash"

status
enum<string>

completed indique la fin de génération du tour, éventuellement avec uniquement des appels d’outils. incomplete indique une sortie incomplète. Vérifiez output et error.

Options disponibles:
completed,
incomplete,
failed,
in_progress,
queued
output
object[]

Éléments de sortie ordonnés. Extrayez text des entrées content de type output_text dans les éléments type=message. reasoning peut précéder la réponse ; un tour function_call peut n’avoir aucun texte de réponse. Ne lisez pas systématiquement output[0].

output_text
string

Texte de réponse agrégé facultatif ; il peut être absent. Les clients génériques doivent parcourir output.

usage
object
error
object | null

Erreur de réponse, généralement null en cas de réussite.

incomplete_details
object
metadata
object | null