> ## Documentation Index
> Fetch the complete documentation index at: https://phaseo.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Créer un message

> Endpoint Messages compatible avec Anthropic à l’adresse `/v1/messages`.

`/v1/messages` accepte les corps de requête de l’API Anthropic Messages et renvoie des réponses au format Anthropic.

## Diffusion en continu

Définissez `stream: true` pour recevoir des événements envoyés par le serveur au format Anthropic (`message_start`, `content_block_*`, `message_delta`, `message_stop`).

## Remarques

* Les champs Anthropic d’utilisation des outils sont pris en charge.
* `stream: true` fonctionne aussi avec les boucles d’outils. Pour les outils serveur gérés par le Gateway, Phaseo peut matérialiser le tour amont, poursuivre la boucle et réémettre un flux synthétique.
* Le format natif de l’outil de recherche Web Anthropic est également accepté directement dans `tools`, par exemple `type: "web_search_20250305"`.
* L’en-tête `X-Phaseo-Strictness` contrôle le traitement des paramètres non pris en charge.

## Outils serveur

`/v1/messages` prend également en charge les outils serveur gérés par le Gateway suivants :

* `gateway:datetime`
* `phaseo:web_search`
* `phaseo:web_fetch`
* `phaseo:advisor`
* `phaseo:image_generation`

Phaseo convertit ces outils au format compatible avec Anthropic pour le fournisseur amont, les exécute côté serveur et poursuit la boucle d’outils.

## Recherche Web native du fournisseur

Lorsqu’un couple modèle/fournisseur Anthropic compatible prend en charge la recherche Web native, vous pouvez transmettre directement sa définition d’outil :

```bash theme={null}
curl https://api.phaseo.app/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-4",
    "max_tokens": 512,
    "messages": [
      { "role": "user", "content": "Find the latest Anthropic web search guidance." }
    ],
    "tools": [
      {
        "type": "web_search_20250305",
        "name": "web_search",
        "max_uses": 3,
        "allowed_domains": ["docs.anthropic.com"]
      }
    ],
    "tool_choice": { "type": "tool", "name": "web_search" }
  }'
```

Le routage du fournisseur vérifie toujours la prise en charge de `web_search_options` avant l’exécution.

### Exemple de date et heure

```bash theme={null}
curl https://api.phaseo.app/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-4",
    "max_tokens": 512,
    "stream": false,
    "messages": [
      { "role": "user", "content": "What time is it in America/New_York right now?" }
    ],
    "tools": [
      {
        "type": "gateway:datetime",
        "parameters": { "timezone": "America/New_York" }
      }
    ],
    "tool_choice": { "type": "auto" }
  }'
```

Le cas échéant, les compteurs `usage.server_tool_use.*` indiquent les appels des outils serveur.


## OpenAPI

````yaml fr/openapi/v1/openapi.localized.yaml POST /messages
openapi: 3.0.3
info:
  title: Phaseo Gateway API
  description: >-
    Une API de passerelle pour accéder à divers modèles d’IA via des points de
    terminaison compatibles avec OpenAI.
  version: 1.0.0
  contact:
    name: Phaseo
    url: https://phaseo.app
    email: danielbutler500@gmail.com
servers:
  - url: https://api.phaseo.app/v1
    description: Routage mondial
security:
  - BearerAuth: []
tags:
  - name: Gateway
    description: Core Phaseo Gateway operations.
paths:
  /messages:
    post:
      tags:
        - Gateway
      summary: Créer un message
      description: Crée un message à l’aide de l’API Anthropic Messages.
      operationId: createAnthropicMessage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnthropicMessagesRequest'
            examples:
              datetimeServerTool:
                summary: Built-in datetime server tool
                value:
                  model: anthropic/claude-sonnet-4
                  max_tokens: 512
                  stream: false
                  messages:
                    - role: user
                      content: What time is it in America/New_York right now?
                  tools:
                    - type: gateway:datetime
                      parameters:
                        timezone: America/New_York
                  tool_choice:
                    type: auto
      responses:
        '200':
          description: Réponse du message
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnthropicMessagesResponse'
            text/event-stream:
              schema:
                type: string
      servers:
        - url: https://api.phaseo.app/v1
          description: Routage mondial
        - url: https://eu.api.phaseo.app/v1
          description: Routage régional vers les fournisseurs de l’UE (texte uniquement)
        - url: https://us.api.phaseo.app/v1
          description: >-
            Routage régional vers les fournisseurs des États-Unis (texte
            uniquement)
components:
  schemas:
    AnthropicMessagesRequest:
      type: object
      required:
        - model
        - messages
        - max_tokens
      properties:
        model:
          type: string
        system:
          oneOf:
            - type: string
            - type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - text
                  text:
                    type: string
                  cache_control:
                    $ref: '#/components/schemas/CacheControl'
        messages:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AnthropicMessage'
        max_tokens:
          type: integer
          minimum: 1
        service_tier:
          type: string
          description: >-
            Sélectionne un niveau de routage ou de tarification pris en charge
            sur les API de texte compatibles.
          enum:
            - standard
            - default
            - fast
            - ultrafast
            - priority
            - flex
            - batch
        temperature:
          type: number
          minimum: 0
          maximum: 1
        top_p:
          type: number
          minimum: 0
          maximum: 1
        top_k:
          type: integer
          minimum: 1
        tools:
          type: array
          description: >-
            Outils compatibles avec Anthropic, ainsi que des outils serveur
            gérés par la passerelle.
          items:
            oneOf:
              - $ref: '#/components/schemas/AnthropicTool'
              - $ref: '#/components/schemas/GatewayDatetimeToolDefinition'
              - $ref: '#/components/schemas/GatewayWebSearchToolDefinition'
              - $ref: '#/components/schemas/GatewayWebFetchToolDefinition'
              - $ref: '#/components/schemas/SubagentToolDefinition'
              - $ref: '#/components/schemas/FusionToolDefinition'
              - $ref: '#/components/schemas/SearchModelsToolDefinition'
        tool_choice:
          description: >-
            Objet ou chaîne de choix d’outil Anthropic. Les noms des outils
            serveur gérés par la passerelle sont également acceptés et réécrits
            par celle-ci.
          oneOf:
            - type: object
            - type: string
        stream:
          type: boolean
        metadata:
          type: object
          additionalProperties: true
        session_id:
          type: string
          maxLength: 256
          description: >-
            Identifiant unique permettant de regrouper des requêtes liées (par
            exemple, une conversation ou un flux de travail d’agent) à des fins
            d’observabilité.
        reasoning:
          $ref: '#/components/schemas/ReasoningConfig'
        stop_sequences:
          type: array
          items:
            type: string
        provider_options:
          $ref: '#/components/schemas/ProviderOptions'
        usage:
          type: boolean
        meta:
          type: boolean
        echo_upstream_request:
          type: boolean
        debug:
          $ref: '#/components/schemas/DebugOptions'
        provider:
          $ref: '#/components/schemas/ProviderRoutingOptions'
    AnthropicMessagesResponse:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        role:
          type: string
          enum:
            - assistant
        model:
          type: string
        content:
          type: array
          items:
            $ref: '#/components/schemas/AnthropicContentBlock'
        stop_reason:
          type: string
        stop_sequence:
          type: string
        usage:
          $ref: '#/components/schemas/AnthropicUsage'
    CacheControl:
      type: object
      properties:
        type:
          type: string
        ttl:
          type: string
        scope:
          type: string
      additionalProperties: true
    AnthropicMessage:
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          enum:
            - user
            - assistant
        content:
          oneOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/AnthropicContentBlock'
    AnthropicTool:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        async:
          type: boolean
          description: >-
            Permet aux modèles OpenAI pris en charge de continuer pendant que
            l’appelant exécute cet outil. Ignoré lors du routage vers d’autres
            fournisseurs.
        description:
          type: string
        input_schema:
          type: object
    GatewayDatetimeToolDefinition:
      type: object
      description: >-
        Outil serveur géré par la passerelle. Celle-ci effectue la recherche de
        date et d’heure, puis injecte le résultat dans la boucle d’outils du
        modèle.
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:datetime
            - gateway:datetime
        parameters:
          type: object
          properties:
            timezone:
              type: string
              description: Nom de fuseau horaire IANA (par exemple, Europe/London).
          additionalProperties: false
        timezone:
          type: string
          description: Raccourci historique pour le fuseau horaire par défaut (IANA).
      additionalProperties: false
    GatewayWebSearchToolDefinition:
      type: object
      description: >-
        Outil serveur géré par la passerelle. Celle-ci effectue une recherche
        Web et injecte les résultats normalisés dans la boucle d’outils du
        modèle.
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:web_search
            - gateway:web_search
        parameters:
          type: object
          properties:
            engine:
              type: string
              enum:
                - auto
                - native
                - exa
                - firecrawl
                - parallel
                - perplexity
                - tinyfish
            max_results:
              type: integer
              minimum: 1
              maximum: 25
            language:
              type: string
            page:
              type: integer
              minimum: 0
              maximum: 10
            include_text:
              type: boolean
            include_highlights:
              type: boolean
          additionalProperties: false
        max_results:
          type: integer
          minimum: 1
          maximum: 25
        engine:
          type: string
          enum:
            - auto
            - native
            - exa
            - firecrawl
            - parallel
            - perplexity
            - tinyfish
        language:
          type: string
        page:
          type: integer
          minimum: 0
          maximum: 10
        include_text:
          type: boolean
        include_highlights:
          type: boolean
      additionalProperties: false
    GatewayWebFetchToolDefinition:
      type: object
      description: >-
        Outil serveur géré par la passerelle. Celle-ci récupère une page
        HTTP(S), la réduit à un texte de taille limitée, puis injecte le
        résultat dans la boucle d’outils du modèle.
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:web_fetch
            - gateway:web_fetch
        parameters:
          type: object
          properties:
            max_chars:
              type: integer
              minimum: 1
              maximum: 100000
          additionalProperties: false
        max_chars:
          type: integer
          minimum: 1
          maximum: 100000
      additionalProperties: false
    SubagentToolDefinition:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:subagent
        parameters:
          type: object
          additionalProperties: true
    FusionToolDefinition:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:fusion
        parameters:
          type: object
          required:
            - analysis_models
          properties:
            analysis_models:
              type: array
              minItems: 2
              maxItems: 8
              items:
                type: string
            model:
              type: string
          additionalProperties: true
    SearchModelsToolDefinition:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - phaseo:search_models
        parameters:
          type: object
          properties:
            max_results:
              type: integer
              minimum: 1
              maximum: 20
    ReasoningConfig:
      type: object
      properties:
        effort:
          type: string
          enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          default: medium
        mode:
          type: string
          enum:
            - standard
            - pro
        summary:
          type: string
          enum:
            - auto
            - concise
            - detailed
          default: auto
        enabled:
          type: boolean
        max_tokens:
          type: integer
          minimum: 0
    ProviderOptions:
      type: object
      description: Options propres au fournisseur, facultatives.
      properties:
        openai:
          type: object
          properties:
            context_management:
              type: object
              description: Configuration facultative de la gestion du contexte OpenAI.
              properties:
                type:
                  type: string
                  enum:
                    - compaction
                compact_threshold:
                  type: number
              required:
                - type
            prompt_cache_retention:
              type: string
        anthropic:
          type: object
          properties:
            cache_control:
              $ref: '#/components/schemas/CacheControl'
        google:
          type: object
          properties:
            cache_control:
              $ref: '#/components/schemas/CacheControl'
            cached_content:
              type: string
            cache_ttl:
              type: string
    DebugOptions:
      type: object
      description: >-
        Options de débogage de la passerelle. Ces indicateurs ne sont jamais
        transmis au fournisseur.
      properties:
        enabled:
          type: boolean
        return_upstream_request:
          type: boolean
        return_upstream_response:
          type: boolean
        trace:
          type: boolean
        trace_level:
          type: string
          enum:
            - summary
            - full
    ProviderRoutingOptions:
      type: object
      description: >-
        Préférences de routage des fournisseurs pour la sélection par la
        passerelle.
      properties:
        order:
          type: array
          items:
            type: string
        only:
          type: array
          items:
            type: string
        ignore:
          type: array
          items:
            type: string
        include_alpha:
          type: boolean
          description: >-
            Inclure les fournisseurs alpha dans le routage (désactivé par
            défaut).
        allow_fallbacks:
          type: boolean
          nullable: true
          description: >-
            Autoriser le repli vers un autre fournisseur éligible après un
            échec.
        require_parameters:
          type: boolean
          nullable: true
          description: >-
            Exiger la prise en charge des paramètres demandés par le fournisseur
            avant le routage.
        required_execution_region:
          type: string
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs disposant de la région
            d’exécution demandée.
        required_data_region:
          type: string
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs disposant de la région de
            données demandée.
        require_zero_data_retention:
          type: boolean
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs qui prennent en charge la
            conservation nulle des données.
        data_collection:
          type: string
          nullable: true
          enum:
            - allow
            - deny
        zdr:
          type: boolean
          nullable: true
        enforce_distillable_text:
          type: boolean
          nullable: true
        quantizations:
          type: array
          nullable: true
          items:
            type: string
        sort:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
          description: >-
            Classer les fournisseurs pour cette requête, par exemple selon le
            prix, la latence ou le débit.
        max_price:
          type: object
          properties:
            prompt:
              oneOf:
                - type: number
                - type: string
            completion:
              oneOf:
                - type: number
                - type: string
            image:
              oneOf:
                - type: number
                - type: string
            audio:
              oneOf:
                - type: number
                - type: string
            request:
              oneOf:
                - type: number
                - type: string
        preferred_min_throughput:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
        preferred_max_latency:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
    AnthropicContentBlock:
      type: object
      properties:
        type:
          type: string
          enum:
            - text
            - image
            - tool_use
            - tool_result
        text:
          type: string
        cache_control:
          $ref: '#/components/schemas/CacheControl'
        source:
          type: object
          properties:
            type:
              type: string
            media_type:
              type: string
            data:
              type: string
            url:
              type: string
        id:
          type: string
        name:
          type: string
        input:
          type: object
        tool_use_id:
          type: string
        content:
          type: string
    AnthropicUsage:
      type: object
      properties:
        input_tokens:
          type: integer
        output_tokens:
          type: integer
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Authentification par jeton Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.