HTTP Client
4
Total requests
0
HTTP errors
Clients
http_client 4
Requests
POST | https://api.anthropic.com/v1/messages | |
---|---|---|
Request options | [ "headers" => [ "x-api-key" => "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" "anthropic-version" => "2023-06-01" "content-type" => "application/json" ] "json" => [ "model" => "claude-sonnet-4-20250514" "max_tokens" => 500 "system" => "Tu es Julia, un assistant IA pour les cliniques. Tu aides les clients à prendre rendez-vous, à obtenir des informations sur les traitements et à gérer leurs soins. Réponds de manière professionnelle et empathique en français." "messages" => [ [ "role" => "user" "content" => [ [ "type" => "text" "text" => "Disponibilités pour un peeling cette semaine" ] ] ] ] "tools" => [ [ "name" => "calculer_date" "description" => "Calculer une date relative (ex: "dans 3 jours", "ds 2 j", "demain", "J+2") et retourner au format ISO8601." "input_schema" => [ "type" => "object" "properties" => [ "expression" => [ "type" => "string" "description" => "Expression relative ("dans 3j", "ds 2 j", "demain", "après-demain", "J+2", "2j")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut du dernier message utilisateur (fallback si expression manquante)." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base ISO8601 (optionnel, défaut: maintenant)" ] "time" => [ "type" => "string" "description" => "Heure souhaitée HH:MM (optionnel, défaut: 09:00). Peut aussi être implicite (ex: "à 14h")." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Si non fourni: timezone serveur." ] ] ] ] [ "name" => "rdv_creer" "description" => "Créer un rendez-vous (RDV) pour un client, à partir d’une date ISO ou d’une expression relative (ex: "dans 3 jours à 14h")." "input_schema" => [ "type" => "object" "properties" => [ "subject" => [ "type" => "string" "description" => "Objet du RDV (ex: "Soin botox")." ] "location" => [ "type" => "string" "description" => "Lieu du RDV (optionnel)." ] "client_id" => [ "type" => "integer" "description" => "ID du client (recommandé si connu)." ] "client_query" => [ "type" => "string" "description" => "Recherche client par nom/email/téléphone si client_id non fourni." ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure absolue ISO8601 (ex: "2025-09-17T14:30:00+09:00")." ] "expression" => [ "type" => "string" "description" => "Expression relative (ex: "dans 3 jours à 14h", "demain 10h")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut utilisateur (fallback si expression manquante)." ] "time" => [ "type" => "string" "description" => "Heure HH:MM si non incluse dans l’expression (défaut: 09:00)." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Défaut: timezone serveur." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base pour une expression relative (défaut: maintenant)." ] ] ] ] [ "name" => "rdv_deplacer" "description" => "Déplacer (replanifier) un RDV par ID vers une nouvelle date ISO8601." "input_schema" => [ "type" => "object" "required" => [ "id" "date_iso" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Nouvelle date/heure ISO" ] "timezone" => [ "type" => "string" "description" => "TZ IANA pour homogénéiser si besoin" ] ] ] ] [ "name" => "envoyer_email" "description" => "Envoyer un e-mail avec sujet, corps (HTML/texte) et pièces jointes facultatives." "input_schema" => [ "type" => "object" "properties" => [ "to" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "email" => [ "type" => "string" ] "name" => [ "type" => "string" ] ] "required" => [ "email" ] "additionalProperties" => false ] "minItems" => 1 ] "subject" => [ "type" => "string" "minLength" => 1 ] "htmlContent" => [ "type" => "string" ] "textContent" => [ "type" => "string" ] "from" => [ "type" => "string" ] "attachments" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "path" => [ "type" => "string" ] "content" => [ "type" => "string" "description" => "base64" ] "filename" => [ "type" => "string" ] "mimeType" => [ "type" => "string" ] ] "anyOf" => [ [ "required" => [ "path" ] ] [ "required" => [ "content" "filename" ] ] ] "additionalProperties" => false ] ] ] "required" => [ "to" "subject" ] ] ] [ "name" => "gerer_client" "description" => "Créer / récupérer / mettre à jour un client, lister ses rendez-vous." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" "get_rdvs" ] "description" => "Action à effectuer" ] "client" => [ "type" => "object" "description" => "Données du client" "properties" => [ "client_id" => [ "type" => "integer" ] "prenom" => [ "type" => "string" ] "nom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] ] ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_entreprise" "description" => "Créer/mettre à jour/récupérer l'entreprise liée à l'utilisateur courant." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" ] "description" => "Action à effectuer" ] "entreprise" => [ "type" => "object" "description" => "Champs de l’entreprise à insérer/mettre à jour" "properties" => [ "nom" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] "pays" => [ "type" => "string" ] "siret" => [ "type" => "string" ] "tvaIntracom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "iban" => [ "type" => "string" ] "bic" => [ "type" => "string" ] "siteWeb" => [ "type" => "string" ] "sector" => [ "type" => "string" ] "doctorSpeciality" => [ "type" => "string" ] "rpps" => [ "type" => "string" ] "amNumber" => [ "type" => "string" ] "medecinParentFirstname" => [ "type" => "string" ] "medecinParentLastname" => [ "type" => "string" ] "medecinParentType" => [ "type" => "string" ] "medecinParentRpps" => [ "type" => "string" ] "isMedecinRemplacant" => [ "type" => "boolean" ] "signatureFile" => [ "type" => "string" "description" => "base64" ] "signatureFilename" => [ "type" => "string" ] "signatureFileSize" => [ "type" => "integer" ] ] "additionalProperties" => true ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_rappel" "description" => "Créer ou récupérer un rappel (message, date/heure, type). Pour créer un rappel, utilise action="creer" avec le message et la date/heure." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "creer" "recuperer" ] "description" => "Action à effectuer: "creer" pour créer un nouveau rappel, "recuperer" pour récupérer un rappel existant" ] "message" => [ "type" => "string" "description" => "Texte du rappel (requis pour action=creer). Ex: "Rappel soin botox"" ] "remind_at" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure ISO8601 (ex: 2025-09-16T10:00:00+02:00) pour action=creer" ] "type" => [ "type" => "string" "enum" => [ "email" "sms" "whatsapp" ] "description" => "Canal de notification (optionnel, défaut: whatsapp)" "default" => "whatsapp" ] "rappel_id" => [ "type" => "integer" "description" => "ID du rappel (requis pour action=recuperer)" ] ] "required" => [ "action" ] ] ] [ "name" => "rdv_lister" "description" => "Lister les RDV avec filtres (plage de dates, client), pagination, tri, et regroupement par jour." "input_schema" => [ "type" => "object" "properties" => [ "date_from" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 incluse" ] "date_to" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 exclue" ] "timezone" => [ "type" => "string" "description" => "IANA TZ (ex: "Asia/Seoul")" ] "client_id" => [ "type" => "integer" "description" => "Filtrer par client ID" ] "client_query" => [ "type" => "string" "description" => "Recherche client si pas d’ID" ] "limit" => [ "type" => "integer" "default" => 50 ] "offset" => [ "type" => "integer" "default" => 0 ] "order" => [ "type" => "string" "enum" => [ "asc" "desc" ] "default" => "asc" ] "group_by_day" => [ "type" => "boolean" "default" => false ] "with_total" => [ "type" => "boolean" "default" => true ] ] ] ] [ "name" => "rdv_supprimer" "description" => "Supprimer un RDV par ID." "input_schema" => [ "type" => "object" "required" => [ "id" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "confirm" => [ "type" => "boolean" "default" => true "description" => "Confirmer la suppression" ] ] ] ] ] "stream" => true ] "timeout" => 30 "max_duration" => 300 ] |
|
Response |
200
[ "info" => [ "header_size" => 1060 "request_size" => 753 "total_time" => 2.865999 "namelookup_time" => 0.151396 "connect_time" => 0.157023 "pretransfer_time" => 0.250565 "size_upload" => 8126.0 "size_download" => 4120.0 "speed_download" => 1437.0 "speed_upload" => 2835.0 "upload_content_length" => 8126.0 "starttransfer_time" => 0.250597 "primary_ip" => "2607:6bc0::10" "primary_port" => 443 "local_ip" => "2001:41d0:a:3134::1" "local_port" => 40482 "http_version" => 3 "protocol" => 2 "scheme" => "HTTPS" "appconnect_time_us" => 250430 "connect_time_us" => 157023 "namelookup_time_us" => 151396 "pretransfer_time_us" => 250565 "starttransfer_time_us" => 250597 "total_time_us" => 2865999 "effective_method" => "POST" "max_duration" => 300.0 "start_time" => 1758121344.464 "original_url" => "https://api.anthropic.com/v1/messages" "pause_handler" => Closure(float $duration) {#2332 : "Symfony\Component\HttpClient\Response\CurlResponse" : { : CurlHandle {#1372 …} : Symfony\Component\HttpClient\Internal\CurlClientState {#2426 …} : -9223372036854775808 } } "debug" => """ * Trying 2607:6bc0::10:443...\n * Connected to api.anthropic.com (2607:6bc0::10) port 443 (#0)\n * ALPN, offering h2\n * ALPN, offering http/1.1\n * CAfile: /etc/ssl/certs/ca-certificates.crt\n * CApath: /etc/ssl/certs\n * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384\n * ALPN, server accepted to use h2\n * Server certificate:\n * subject: CN=api.anthropic.com\n * start date: Jul 10 07:29:04 2025 GMT\n * expire date: Oct 8 08:29:01 2025 GMT\n * subjectAltName: host "api.anthropic.com" matched cert's "api.anthropic.com"\n * issuer: C=US; O=Google Trust Services; CN=WE1\n * SSL certificate verify ok.\n * Using HTTP2, server supports multiplexing\n * Connection state changed (HTTP/2 confirmed)\n * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0\n * Using Stream ID: 1 (easy handle 0x559dd3858960)\n > POST /v1/messages HTTP/2\r\n Host: api.anthropic.com\r\n x-api-key: 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\r\n anthropic-version: 2023-06-01\r\n content-type: application/json\r\n accept: */*\r\n user-agent: Symfony HttpClient (Curl)\r\n accept-encoding: gzip\r\n tracestate: 4354935@nr=0-0-4354935-466420805-48be331a1d0982b8-53293263b8481ba9-1-1.277222-1758121344464\r\n newrelic: eyJ2IjpbMCwxXSwiZCI6eyJ0eSI6IkFwcCIsImFjIjoiNDM1NDkzNSIsImFwIjoiNDY2NDIwODA1IiwiaWQiOiI0OGJlMzMxYTFkMDk4MmI4IiwidHIiOiI1MzI5MzI2M2I4NDgxYmE5IiwidHgiOiI1MzI5MzI2M2I4NDgxYmE5IiwicHIiOjEuMjc3MjIsInNhIjp0cnVlLCJ0aSI6MTc1ODEyMTM0NDQ2NH19\r\n traceparent: 00-000000000000000053293263b8481ba9-48be331a1d0982b8-01\r\n content-length: 8126\r\n \r\n * We are completely uploaded and fine\n * old SSL session ID is stale, removing\n < HTTP/2 200 \r\n < date: Wed, 17 Sep 2025 15:02:26 GMT\r\n < content-type: text/event-stream; charset=utf-8\r\n < cf-ray: 98097c047d97b6b4-CDG\r\n < cache-control: no-cache\r\n < anthropic-ratelimit-input-tokens-limit: 30000\r\n < anthropic-ratelimit-input-tokens-remaining: 29000\r\n < anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:27Z\r\n < anthropic-ratelimit-output-tokens-limit: 8000\r\n < anthropic-ratelimit-output-tokens-remaining: 8000\r\n < anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:24Z\r\n < anthropic-ratelimit-requests-limit: 50\r\n < anthropic-ratelimit-requests-remaining: 49\r\n < anthropic-ratelimit-requests-reset: 2025-09-17T15:02:26Z\r\n < anthropic-ratelimit-tokens-limit: 38000\r\n < anthropic-ratelimit-tokens-remaining: 37000\r\n < anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:24Z\r\n < request-id: req_011CTEB8L47dr8YQ4vEDx5EY\r\n < strict-transport-security: max-age=31536000; includeSubDomains; preload\r\n < anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8\r\n < x-envoy-upstream-service-time: 1257\r\n < via: 1.1 google\r\n < cf-cache-status: DYNAMIC\r\n < x-robots-tag: none\r\n < server: cloudflare\r\n < \r\n """ ] "response_headers" => [ "HTTP/2 200 " "date: Wed, 17 Sep 2025 15:02:26 GMT" "content-type: text/event-stream; charset=utf-8" "cf-ray: 98097c047d97b6b4-CDG" "cache-control: no-cache" "anthropic-ratelimit-input-tokens-limit: 30000" "anthropic-ratelimit-input-tokens-remaining: 29000" "anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:27Z" "anthropic-ratelimit-output-tokens-limit: 8000" "anthropic-ratelimit-output-tokens-remaining: 8000" "anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:24Z" "anthropic-ratelimit-requests-limit: 50" "anthropic-ratelimit-requests-remaining: 49" "anthropic-ratelimit-requests-reset: 2025-09-17T15:02:26Z" "anthropic-ratelimit-tokens-limit: 38000" "anthropic-ratelimit-tokens-remaining: 37000" "anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:24Z" "request-id: req_011CTEB8L47dr8YQ4vEDx5EY" "strict-transport-security: max-age=31536000; includeSubDomains; preload" "anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8" "x-envoy-upstream-service-time: 1257" "via: 1.1 google" "cf-cache-status: DYNAMIC" "x-robots-tag: none" "server: cloudflare" ] ] |
POST | https://api.anthropic.com/v1/messages | |
---|---|---|
Request options | [ "headers" => [ "x-api-key" => "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" "anthropic-version" => "2023-06-01" "content-type" => "application/json" ] "json" => [ "model" => "claude-sonnet-4-20250514" "max_tokens" => 500 "system" => "Tu es Julia, un assistant IA pour les cliniques. Tu aides les clients à prendre rendez-vous, à obtenir des informations sur les traitements et à gérer leurs soins. Réponds de manière professionnelle et empathique en français." "messages" => [ [ "role" => "user" "content" => [ [ "type" => "text" "text" => "Disponibilités pour un peeling cette semaine" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "text" "text" => "Je vais vérifier les disponibilités pour un peeling cette semaine en consultant le planning des rendez-vous." ] [ "type" => "tool_use" "id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "name" => "calculer_date" "input" => [ "expression" => "cette semaine" "raw_user_text" => "Disponibilités pour un peeling cette semaine" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "content" => "{"error":"Expression non reconnue: cette semaine","success":false,"help":"Exemples: \"dans 2 jours\", \"ds 2 j\", \"demain\", \"après-demain\", \"dans 3 semaines\", \"J+2\", \"2j\", \"dans 1 mois\", \"à 14h\"."}" ] ] ] ] "tools" => [ [ "name" => "calculer_date" "description" => "Calculer une date relative (ex: "dans 3 jours", "ds 2 j", "demain", "J+2") et retourner au format ISO8601." "input_schema" => [ "type" => "object" "properties" => [ "expression" => [ "type" => "string" "description" => "Expression relative ("dans 3j", "ds 2 j", "demain", "après-demain", "J+2", "2j")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut du dernier message utilisateur (fallback si expression manquante)." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base ISO8601 (optionnel, défaut: maintenant)" ] "time" => [ "type" => "string" "description" => "Heure souhaitée HH:MM (optionnel, défaut: 09:00). Peut aussi être implicite (ex: "à 14h")." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Si non fourni: timezone serveur." ] ] ] ] [ "name" => "rdv_creer" "description" => "Créer un rendez-vous (RDV) pour un client, à partir d’une date ISO ou d’une expression relative (ex: "dans 3 jours à 14h")." "input_schema" => [ "type" => "object" "properties" => [ "subject" => [ "type" => "string" "description" => "Objet du RDV (ex: "Soin botox")." ] "location" => [ "type" => "string" "description" => "Lieu du RDV (optionnel)." ] "client_id" => [ "type" => "integer" "description" => "ID du client (recommandé si connu)." ] "client_query" => [ "type" => "string" "description" => "Recherche client par nom/email/téléphone si client_id non fourni." ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure absolue ISO8601 (ex: "2025-09-17T14:30:00+09:00")." ] "expression" => [ "type" => "string" "description" => "Expression relative (ex: "dans 3 jours à 14h", "demain 10h")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut utilisateur (fallback si expression manquante)." ] "time" => [ "type" => "string" "description" => "Heure HH:MM si non incluse dans l’expression (défaut: 09:00)." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Défaut: timezone serveur." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base pour une expression relative (défaut: maintenant)." ] ] ] ] [ "name" => "rdv_deplacer" "description" => "Déplacer (replanifier) un RDV par ID vers une nouvelle date ISO8601." "input_schema" => [ "type" => "object" "required" => [ "id" "date_iso" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Nouvelle date/heure ISO" ] "timezone" => [ "type" => "string" "description" => "TZ IANA pour homogénéiser si besoin" ] ] ] ] [ "name" => "envoyer_email" "description" => "Envoyer un e-mail avec sujet, corps (HTML/texte) et pièces jointes facultatives." "input_schema" => [ "type" => "object" "properties" => [ "to" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "email" => [ "type" => "string" ] "name" => [ "type" => "string" ] ] "required" => [ "email" ] "additionalProperties" => false ] "minItems" => 1 ] "subject" => [ "type" => "string" "minLength" => 1 ] "htmlContent" => [ "type" => "string" ] "textContent" => [ "type" => "string" ] "from" => [ "type" => "string" ] "attachments" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "path" => [ "type" => "string" ] "content" => [ "type" => "string" "description" => "base64" ] "filename" => [ "type" => "string" ] "mimeType" => [ "type" => "string" ] ] "anyOf" => [ [ "required" => [ "path" ] ] [ "required" => [ "content" "filename" ] ] ] "additionalProperties" => false ] ] ] "required" => [ "to" "subject" ] ] ] [ "name" => "gerer_client" "description" => "Créer / récupérer / mettre à jour un client, lister ses rendez-vous." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" "get_rdvs" ] "description" => "Action à effectuer" ] "client" => [ "type" => "object" "description" => "Données du client" "properties" => [ "client_id" => [ "type" => "integer" ] "prenom" => [ "type" => "string" ] "nom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] ] ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_entreprise" "description" => "Créer/mettre à jour/récupérer l'entreprise liée à l'utilisateur courant." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" ] "description" => "Action à effectuer" ] "entreprise" => [ "type" => "object" "description" => "Champs de l’entreprise à insérer/mettre à jour" "properties" => [ "nom" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] "pays" => [ "type" => "string" ] "siret" => [ "type" => "string" ] "tvaIntracom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "iban" => [ "type" => "string" ] "bic" => [ "type" => "string" ] "siteWeb" => [ "type" => "string" ] "sector" => [ "type" => "string" ] "doctorSpeciality" => [ "type" => "string" ] "rpps" => [ "type" => "string" ] "amNumber" => [ "type" => "string" ] "medecinParentFirstname" => [ "type" => "string" ] "medecinParentLastname" => [ "type" => "string" ] "medecinParentType" => [ "type" => "string" ] "medecinParentRpps" => [ "type" => "string" ] "isMedecinRemplacant" => [ "type" => "boolean" ] "signatureFile" => [ "type" => "string" "description" => "base64" ] "signatureFilename" => [ "type" => "string" ] "signatureFileSize" => [ "type" => "integer" ] ] "additionalProperties" => true ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_rappel" "description" => "Créer ou récupérer un rappel (message, date/heure, type). Pour créer un rappel, utilise action="creer" avec le message et la date/heure." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "creer" "recuperer" ] "description" => "Action à effectuer: "creer" pour créer un nouveau rappel, "recuperer" pour récupérer un rappel existant" ] "message" => [ "type" => "string" "description" => "Texte du rappel (requis pour action=creer). Ex: "Rappel soin botox"" ] "remind_at" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure ISO8601 (ex: 2025-09-16T10:00:00+02:00) pour action=creer" ] "type" => [ "type" => "string" "enum" => [ "email" "sms" "whatsapp" ] "description" => "Canal de notification (optionnel, défaut: whatsapp)" "default" => "whatsapp" ] "rappel_id" => [ "type" => "integer" "description" => "ID du rappel (requis pour action=recuperer)" ] ] "required" => [ "action" ] ] ] [ "name" => "rdv_lister" "description" => "Lister les RDV avec filtres (plage de dates, client), pagination, tri, et regroupement par jour." "input_schema" => [ "type" => "object" "properties" => [ "date_from" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 incluse" ] "date_to" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 exclue" ] "timezone" => [ "type" => "string" "description" => "IANA TZ (ex: "Asia/Seoul")" ] "client_id" => [ "type" => "integer" "description" => "Filtrer par client ID" ] "client_query" => [ "type" => "string" "description" => "Recherche client si pas d’ID" ] "limit" => [ "type" => "integer" "default" => 50 ] "offset" => [ "type" => "integer" "default" => 0 ] "order" => [ "type" => "string" "enum" => [ "asc" "desc" ] "default" => "asc" ] "group_by_day" => [ "type" => "boolean" "default" => false ] "with_total" => [ "type" => "boolean" "default" => true ] ] ] ] [ "name" => "rdv_supprimer" "description" => "Supprimer un RDV par ID." "input_schema" => [ "type" => "object" "required" => [ "id" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "confirm" => [ "type" => "boolean" "default" => true "description" => "Confirmer la suppression" ] ] ] ] ] "stream" => true ] "timeout" => 30 "max_duration" => 300 ] |
|
Response |
200
[ "info" => [ "header_size" => 1060 "request_size" => 753 "total_time" => 2.420724 "namelookup_time" => 5.7E-5 "connect_time" => 5.8E-5 "pretransfer_time" => 0.000204 "size_upload" => 8981.0 "size_download" => 2981.0 "speed_download" => 1231.0 "speed_upload" => 3710.0 "upload_content_length" => 8981.0 "starttransfer_time" => 0.000263 "primary_ip" => "2607:6bc0::10" "primary_port" => 443 "local_ip" => "2001:41d0:a:3134::1" "local_port" => 40482 "http_version" => 3 "protocol" => 2 "scheme" => "HTTPS" "appconnect_time_us" => 58 "connect_time_us" => 58 "namelookup_time_us" => 57 "pretransfer_time_us" => 204 "starttransfer_time_us" => 263 "total_time_us" => 2420724 "effective_method" => "POST" "max_duration" => 300.0 "start_time" => 1758121347.3328 "original_url" => "https://api.anthropic.com/v1/messages" "pause_handler" => Closure(float $duration) {#2432 : "Symfony\Component\HttpClient\Response\CurlResponse" : { : CurlHandle {#2455 …} : Symfony\Component\HttpClient\Internal\CurlClientState {#2426 …} : -9223372036854775727 } } "debug" => """ * Found bundle for host api.anthropic.com: 0x559dd39eff60 [can multiplex]\n * Re-using existing connection! (#0) with host api.anthropic.com\n * Connected to api.anthropic.com (2607:6bc0::10) port 443 (#0)\n * Using Stream ID: 3 (easy handle 0x559dd383f090)\n > POST /v1/messages HTTP/2\r\n Host: api.anthropic.com\r\n x-api-key: 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\r\n anthropic-version: 2023-06-01\r\n content-type: application/json\r\n accept: */*\r\n user-agent: Symfony HttpClient (Curl)\r\n accept-encoding: gzip\r\n tracestate: 4354935@nr=0-0-4354935-466420805-46dae59575794341-53293263b8481ba9-1-1.277222-1758121347332\r\n newrelic: eyJ2IjpbMCwxXSwiZCI6eyJ0eSI6IkFwcCIsImFjIjoiNDM1NDkzNSIsImFwIjoiNDY2NDIwODA1IiwiaWQiOiI0NmRhZTU5NTc1Nzk0MzQxIiwidHIiOiI1MzI5MzI2M2I4NDgxYmE5IiwidHgiOiI1MzI5MzI2M2I4NDgxYmE5IiwicHIiOjEuMjc3MjIsInNhIjp0cnVlLCJ0aSI6MTc1ODEyMTM0NzMzMn19\r\n traceparent: 00-000000000000000053293263b8481ba9-46dae59575794341-01\r\n content-length: 8981\r\n \r\n * We are completely uploaded and fine\n < HTTP/2 200 \r\n < date: Wed, 17 Sep 2025 15:02:28 GMT\r\n < content-type: text/event-stream; charset=utf-8\r\n < cf-ray: 98097c14ddf5b6b4-CDG\r\n < cache-control: no-cache\r\n < anthropic-ratelimit-input-tokens-limit: 30000\r\n < anthropic-ratelimit-input-tokens-remaining: 27000\r\n < anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:34Z\r\n < anthropic-ratelimit-output-tokens-limit: 8000\r\n < anthropic-ratelimit-output-tokens-remaining: 8000\r\n < anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:28Z\r\n < anthropic-ratelimit-requests-limit: 50\r\n < anthropic-ratelimit-requests-remaining: 49\r\n < anthropic-ratelimit-requests-reset: 2025-09-17T15:02:28Z\r\n < anthropic-ratelimit-tokens-limit: 38000\r\n < anthropic-ratelimit-tokens-remaining: 35000\r\n < anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:28Z\r\n < request-id: req_011CTEB8XJHWdDsTfVGoH29y\r\n < strict-transport-security: max-age=31536000; includeSubDomains; preload\r\n < anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8\r\n < x-envoy-upstream-service-time: 1180\r\n < via: 1.1 google\r\n < cf-cache-status: DYNAMIC\r\n < x-robots-tag: none\r\n < server: cloudflare\r\n < \r\n """ ] "response_headers" => [ "HTTP/2 200 " "date: Wed, 17 Sep 2025 15:02:28 GMT" "content-type: text/event-stream; charset=utf-8" "cf-ray: 98097c14ddf5b6b4-CDG" "cache-control: no-cache" "anthropic-ratelimit-input-tokens-limit: 30000" "anthropic-ratelimit-input-tokens-remaining: 27000" "anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:34Z" "anthropic-ratelimit-output-tokens-limit: 8000" "anthropic-ratelimit-output-tokens-remaining: 8000" "anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:28Z" "anthropic-ratelimit-requests-limit: 50" "anthropic-ratelimit-requests-remaining: 49" "anthropic-ratelimit-requests-reset: 2025-09-17T15:02:28Z" "anthropic-ratelimit-tokens-limit: 38000" "anthropic-ratelimit-tokens-remaining: 35000" "anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:28Z" "request-id: req_011CTEB8XJHWdDsTfVGoH29y" "strict-transport-security: max-age=31536000; includeSubDomains; preload" "anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8" "x-envoy-upstream-service-time: 1180" "via: 1.1 google" "cf-cache-status: DYNAMIC" "x-robots-tag: none" "server: cloudflare" ] ] |
POST | https://api.anthropic.com/v1/messages | |
---|---|---|
Request options | [ "headers" => [ "x-api-key" => "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" "anthropic-version" => "2023-06-01" "content-type" => "application/json" ] "json" => [ "model" => "claude-sonnet-4-20250514" "max_tokens" => 500 "system" => "Tu es Julia, un assistant IA pour les cliniques. Tu aides les clients à prendre rendez-vous, à obtenir des informations sur les traitements et à gérer leurs soins. Réponds de manière professionnelle et empathique en français." "messages" => [ [ "role" => "user" "content" => [ [ "type" => "text" "text" => "Disponibilités pour un peeling cette semaine" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "text" "text" => "Je vais vérifier les disponibilités pour un peeling cette semaine en consultant le planning des rendez-vous." ] [ "type" => "tool_use" "id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "name" => "calculer_date" "input" => [ "expression" => "cette semaine" "raw_user_text" => "Disponibilités pour un peeling cette semaine" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "content" => "{"error":"Expression non reconnue: cette semaine","success":false,"help":"Exemples: \"dans 2 jours\", \"ds 2 j\", \"demain\", \"après-demain\", \"dans 3 semaines\", \"J+2\", \"2j\", \"dans 1 mois\", \"à 14h\"."}" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "text" "text" => "Laissez-moi calculer les dates pour cette semaine et vérifier les créneaux disponibles :" ] [ "type" => "tool_use" "id" => "toolu_01VYagApZGNqHT63qN6w1SSR" "name" => "calculer_date" "input" => [ "expression" => "lundi" "time" => "09:00" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01VYagApZGNqHT63qN6w1SSR" "content" => "{"error":"Expression non reconnue: lundi","success":false,"help":"Exemples: \"dans 2 jours\", \"ds 2 j\", \"demain\", \"après-demain\", \"dans 3 semaines\", \"J+2\", \"2j\", \"dans 1 mois\", \"à 14h\"."}" ] ] ] ] "tools" => [ [ "name" => "calculer_date" "description" => "Calculer une date relative (ex: "dans 3 jours", "ds 2 j", "demain", "J+2") et retourner au format ISO8601." "input_schema" => [ "type" => "object" "properties" => [ "expression" => [ "type" => "string" "description" => "Expression relative ("dans 3j", "ds 2 j", "demain", "après-demain", "J+2", "2j")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut du dernier message utilisateur (fallback si expression manquante)." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base ISO8601 (optionnel, défaut: maintenant)" ] "time" => [ "type" => "string" "description" => "Heure souhaitée HH:MM (optionnel, défaut: 09:00). Peut aussi être implicite (ex: "à 14h")." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Si non fourni: timezone serveur." ] ] ] ] [ "name" => "rdv_creer" "description" => "Créer un rendez-vous (RDV) pour un client, à partir d’une date ISO ou d’une expression relative (ex: "dans 3 jours à 14h")." "input_schema" => [ "type" => "object" "properties" => [ "subject" => [ "type" => "string" "description" => "Objet du RDV (ex: "Soin botox")." ] "location" => [ "type" => "string" "description" => "Lieu du RDV (optionnel)." ] "client_id" => [ "type" => "integer" "description" => "ID du client (recommandé si connu)." ] "client_query" => [ "type" => "string" "description" => "Recherche client par nom/email/téléphone si client_id non fourni." ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure absolue ISO8601 (ex: "2025-09-17T14:30:00+09:00")." ] "expression" => [ "type" => "string" "description" => "Expression relative (ex: "dans 3 jours à 14h", "demain 10h")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut utilisateur (fallback si expression manquante)." ] "time" => [ "type" => "string" "description" => "Heure HH:MM si non incluse dans l’expression (défaut: 09:00)." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Défaut: timezone serveur." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base pour une expression relative (défaut: maintenant)." ] ] ] ] [ "name" => "rdv_deplacer" "description" => "Déplacer (replanifier) un RDV par ID vers une nouvelle date ISO8601." "input_schema" => [ "type" => "object" "required" => [ "id" "date_iso" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Nouvelle date/heure ISO" ] "timezone" => [ "type" => "string" "description" => "TZ IANA pour homogénéiser si besoin" ] ] ] ] [ "name" => "envoyer_email" "description" => "Envoyer un e-mail avec sujet, corps (HTML/texte) et pièces jointes facultatives." "input_schema" => [ "type" => "object" "properties" => [ "to" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "email" => [ "type" => "string" ] "name" => [ "type" => "string" ] ] "required" => [ "email" ] "additionalProperties" => false ] "minItems" => 1 ] "subject" => [ "type" => "string" "minLength" => 1 ] "htmlContent" => [ "type" => "string" ] "textContent" => [ "type" => "string" ] "from" => [ "type" => "string" ] "attachments" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "path" => [ "type" => "string" ] "content" => [ "type" => "string" "description" => "base64" ] "filename" => [ "type" => "string" ] "mimeType" => [ "type" => "string" ] ] "anyOf" => [ [ "required" => [ "path" ] ] [ "required" => [ "content" "filename" ] ] ] "additionalProperties" => false ] ] ] "required" => [ "to" "subject" ] ] ] [ "name" => "gerer_client" "description" => "Créer / récupérer / mettre à jour un client, lister ses rendez-vous." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" "get_rdvs" ] "description" => "Action à effectuer" ] "client" => [ "type" => "object" "description" => "Données du client" "properties" => [ "client_id" => [ "type" => "integer" ] "prenom" => [ "type" => "string" ] "nom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] ] ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_entreprise" "description" => "Créer/mettre à jour/récupérer l'entreprise liée à l'utilisateur courant." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" ] "description" => "Action à effectuer" ] "entreprise" => [ "type" => "object" "description" => "Champs de l’entreprise à insérer/mettre à jour" "properties" => [ "nom" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] "pays" => [ "type" => "string" ] "siret" => [ "type" => "string" ] "tvaIntracom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "iban" => [ "type" => "string" ] "bic" => [ "type" => "string" ] "siteWeb" => [ "type" => "string" ] "sector" => [ "type" => "string" ] "doctorSpeciality" => [ "type" => "string" ] "rpps" => [ "type" => "string" ] "amNumber" => [ "type" => "string" ] "medecinParentFirstname" => [ "type" => "string" ] "medecinParentLastname" => [ "type" => "string" ] "medecinParentType" => [ "type" => "string" ] "medecinParentRpps" => [ "type" => "string" ] "isMedecinRemplacant" => [ "type" => "boolean" ] "signatureFile" => [ "type" => "string" "description" => "base64" ] "signatureFilename" => [ "type" => "string" ] "signatureFileSize" => [ "type" => "integer" ] ] "additionalProperties" => true ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_rappel" "description" => "Créer ou récupérer un rappel (message, date/heure, type). Pour créer un rappel, utilise action="creer" avec le message et la date/heure." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "creer" "recuperer" ] "description" => "Action à effectuer: "creer" pour créer un nouveau rappel, "recuperer" pour récupérer un rappel existant" ] "message" => [ "type" => "string" "description" => "Texte du rappel (requis pour action=creer). Ex: "Rappel soin botox"" ] "remind_at" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure ISO8601 (ex: 2025-09-16T10:00:00+02:00) pour action=creer" ] "type" => [ "type" => "string" "enum" => [ "email" "sms" "whatsapp" ] "description" => "Canal de notification (optionnel, défaut: whatsapp)" "default" => "whatsapp" ] "rappel_id" => [ "type" => "integer" "description" => "ID du rappel (requis pour action=recuperer)" ] ] "required" => [ "action" ] ] ] [ "name" => "rdv_lister" "description" => "Lister les RDV avec filtres (plage de dates, client), pagination, tri, et regroupement par jour." "input_schema" => [ "type" => "object" "properties" => [ "date_from" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 incluse" ] "date_to" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 exclue" ] "timezone" => [ "type" => "string" "description" => "IANA TZ (ex: "Asia/Seoul")" ] "client_id" => [ "type" => "integer" "description" => "Filtrer par client ID" ] "client_query" => [ "type" => "string" "description" => "Recherche client si pas d’ID" ] "limit" => [ "type" => "integer" "default" => 50 ] "offset" => [ "type" => "integer" "default" => 0 ] "order" => [ "type" => "string" "enum" => [ "asc" "desc" ] "default" => "asc" ] "group_by_day" => [ "type" => "boolean" "default" => false ] "with_total" => [ "type" => "boolean" "default" => true ] ] ] ] [ "name" => "rdv_supprimer" "description" => "Supprimer un RDV par ID." "input_schema" => [ "type" => "object" "required" => [ "id" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "confirm" => [ "type" => "boolean" "default" => true "description" => "Confirmer la suppression" ] ] ] ] ] "stream" => true ] "timeout" => 30 "max_duration" => 300 ] |
|
Response |
200
[ "info" => [ "header_size" => 1060 "request_size" => 753 "total_time" => 2.768918 "namelookup_time" => 5.6E-5 "connect_time" => 5.6E-5 "pretransfer_time" => 0.000202 "size_upload" => 9747.0 "size_download" => 3615.0 "speed_download" => 1305.0 "speed_upload" => 3520.0 "upload_content_length" => 9747.0 "starttransfer_time" => 0.000264 "primary_ip" => "2607:6bc0::10" "primary_port" => 443 "local_ip" => "2001:41d0:a:3134::1" "local_port" => 40482 "http_version" => 3 "protocol" => 2 "scheme" => "HTTPS" "appconnect_time_us" => 56 "connect_time_us" => 56 "namelookup_time_us" => 56 "pretransfer_time_us" => 202 "starttransfer_time_us" => 264 "total_time_us" => 2768918 "effective_method" => "POST" "max_duration" => 300.0 "start_time" => 1758121349.7555 "original_url" => "https://api.anthropic.com/v1/messages" "pause_handler" => Closure(float $duration) {#2433 : "Symfony\Component\HttpClient\Response\CurlResponse" : { : CurlHandle {#2328 …} : Symfony\Component\HttpClient\Internal\CurlClientState {#2426 …} : -9223372036854775708 } } "debug" => """ * Found bundle for host api.anthropic.com: 0x559dd39eff60 [can multiplex]\n * Re-using existing connection! (#0) with host api.anthropic.com\n * Connected to api.anthropic.com (2607:6bc0::10) port 443 (#0)\n * Using Stream ID: 5 (easy handle 0x559dd3a66f00)\n > POST /v1/messages HTTP/2\r\n Host: api.anthropic.com\r\n x-api-key: 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\r\n anthropic-version: 2023-06-01\r\n content-type: application/json\r\n accept: */*\r\n user-agent: Symfony HttpClient (Curl)\r\n accept-encoding: gzip\r\n tracestate: 4354935@nr=0-0-4354935-466420805-ccbb86390b705165-53293263b8481ba9-1-1.277222-1758121349755\r\n newrelic: eyJ2IjpbMCwxXSwiZCI6eyJ0eSI6IkFwcCIsImFjIjoiNDM1NDkzNSIsImFwIjoiNDY2NDIwODA1IiwiaWQiOiJjY2JiODYzOTBiNzA1MTY1IiwidHIiOiI1MzI5MzI2M2I4NDgxYmE5IiwidHgiOiI1MzI5MzI2M2I4NDgxYmE5IiwicHIiOjEuMjc3MjIsInNhIjp0cnVlLCJ0aSI6MTc1ODEyMTM0OTc1NX19\r\n traceparent: 00-000000000000000053293263b8481ba9-ccbb86390b705165-01\r\n content-length: 9747\r\n \r\n * We are completely uploaded and fine\n < HTTP/2 200 \r\n < date: Wed, 17 Sep 2025 15:02:31 GMT\r\n < content-type: text/event-stream; charset=utf-8\r\n < cf-ray: 98097c23ff2fb6b4-CDG\r\n < cache-control: no-cache\r\n < anthropic-ratelimit-input-tokens-limit: 30000\r\n < anthropic-ratelimit-input-tokens-remaining: 23000\r\n < anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:44Z\r\n < anthropic-ratelimit-output-tokens-limit: 8000\r\n < anthropic-ratelimit-output-tokens-remaining: 8000\r\n < anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:30Z\r\n < anthropic-ratelimit-requests-limit: 50\r\n < anthropic-ratelimit-requests-remaining: 48\r\n < anthropic-ratelimit-requests-reset: 2025-09-17T15:02:32Z\r\n < anthropic-ratelimit-tokens-limit: 38000\r\n < anthropic-ratelimit-tokens-remaining: 31000\r\n < anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:30Z\r\n < request-id: req_011CTEB8hedyJRogzbmruEur\r\n < strict-transport-security: max-age=31536000; includeSubDomains; preload\r\n < anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8\r\n < x-envoy-upstream-service-time: 1726\r\n < via: 1.1 google\r\n < cf-cache-status: DYNAMIC\r\n < x-robots-tag: none\r\n < server: cloudflare\r\n < \r\n """ ] "response_headers" => [ "HTTP/2 200 " "date: Wed, 17 Sep 2025 15:02:31 GMT" "content-type: text/event-stream; charset=utf-8" "cf-ray: 98097c23ff2fb6b4-CDG" "cache-control: no-cache" "anthropic-ratelimit-input-tokens-limit: 30000" "anthropic-ratelimit-input-tokens-remaining: 23000" "anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:44Z" "anthropic-ratelimit-output-tokens-limit: 8000" "anthropic-ratelimit-output-tokens-remaining: 8000" "anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:30Z" "anthropic-ratelimit-requests-limit: 50" "anthropic-ratelimit-requests-remaining: 48" "anthropic-ratelimit-requests-reset: 2025-09-17T15:02:32Z" "anthropic-ratelimit-tokens-limit: 38000" "anthropic-ratelimit-tokens-remaining: 31000" "anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:30Z" "request-id: req_011CTEB8hedyJRogzbmruEur" "strict-transport-security: max-age=31536000; includeSubDomains; preload" "anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8" "x-envoy-upstream-service-time: 1726" "via: 1.1 google" "cf-cache-status: DYNAMIC" "x-robots-tag: none" "server: cloudflare" ] ] |
POST | https://api.anthropic.com/v1/messages | |
---|---|---|
Request options | [ "headers" => [ "x-api-key" => "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" "anthropic-version" => "2023-06-01" "content-type" => "application/json" ] "json" => [ "model" => "claude-sonnet-4-20250514" "max_tokens" => 500 "system" => "Tu es Julia, un assistant IA pour les cliniques. Tu aides les clients à prendre rendez-vous, à obtenir des informations sur les traitements et à gérer leurs soins. Réponds de manière professionnelle et empathique en français." "messages" => [ [ "role" => "user" "content" => [ [ "type" => "text" "text" => "Disponibilités pour un peeling cette semaine" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "text" "text" => "Je vais vérifier les disponibilités pour un peeling cette semaine en consultant le planning des rendez-vous." ] [ "type" => "tool_use" "id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "name" => "calculer_date" "input" => [ "expression" => "cette semaine" "raw_user_text" => "Disponibilités pour un peeling cette semaine" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01RxWcVxwuJepj4zHxU1upTo" "content" => "{"error":"Expression non reconnue: cette semaine","success":false,"help":"Exemples: \"dans 2 jours\", \"ds 2 j\", \"demain\", \"après-demain\", \"dans 3 semaines\", \"J+2\", \"2j\", \"dans 1 mois\", \"à 14h\"."}" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "text" "text" => "Laissez-moi calculer les dates pour cette semaine et vérifier les créneaux disponibles :" ] [ "type" => "tool_use" "id" => "toolu_01VYagApZGNqHT63qN6w1SSR" "name" => "calculer_date" "input" => [ "expression" => "lundi" "time" => "09:00" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01VYagApZGNqHT63qN6w1SSR" "content" => "{"error":"Expression non reconnue: lundi","success":false,"help":"Exemples: \"dans 2 jours\", \"ds 2 j\", \"demain\", \"après-demain\", \"dans 3 semaines\", \"J+2\", \"2j\", \"dans 1 mois\", \"à 14h\"."}" ] ] ] [ "role" => "assistant" "content" => [ [ "type" => "tool_use" "id" => "toolu_01GVghWiui14oVWp2oKwbgWM" "name" => "rdv_lister" "input" => [ "date_from" => "2025-01-27T00:00:00" "date_to" => "2025-02-03T00:00:00" "group_by_day" => true "order" => "asc" ] ] ] ] [ "role" => "user" "content" => [ [ "type" => "tool_result" "tool_use_id" => "toolu_01GVghWiui14oVWp2oKwbgWM" "content" => "{"success":true,"range":{"from":"2025-01-27T00:00:00+00:00","to":"2025-02-03T00:00:00+00:00","timezone":"UTC"},"count":0,"total":0,"days":[]}" ] ] ] ] "tools" => [ [ "name" => "calculer_date" "description" => "Calculer une date relative (ex: "dans 3 jours", "ds 2 j", "demain", "J+2") et retourner au format ISO8601." "input_schema" => [ "type" => "object" "properties" => [ "expression" => [ "type" => "string" "description" => "Expression relative ("dans 3j", "ds 2 j", "demain", "après-demain", "J+2", "2j")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut du dernier message utilisateur (fallback si expression manquante)." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base ISO8601 (optionnel, défaut: maintenant)" ] "time" => [ "type" => "string" "description" => "Heure souhaitée HH:MM (optionnel, défaut: 09:00). Peut aussi être implicite (ex: "à 14h")." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Si non fourni: timezone serveur." ] ] ] ] [ "name" => "rdv_creer" "description" => "Créer un rendez-vous (RDV) pour un client, à partir d’une date ISO ou d’une expression relative (ex: "dans 3 jours à 14h")." "input_schema" => [ "type" => "object" "properties" => [ "subject" => [ "type" => "string" "description" => "Objet du RDV (ex: "Soin botox")." ] "location" => [ "type" => "string" "description" => "Lieu du RDV (optionnel)." ] "client_id" => [ "type" => "integer" "description" => "ID du client (recommandé si connu)." ] "client_query" => [ "type" => "string" "description" => "Recherche client par nom/email/téléphone si client_id non fourni." ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure absolue ISO8601 (ex: "2025-09-17T14:30:00+09:00")." ] "expression" => [ "type" => "string" "description" => "Expression relative (ex: "dans 3 jours à 14h", "demain 10h")." ] "raw_user_text" => [ "type" => "string" "description" => "Texte brut utilisateur (fallback si expression manquante)." ] "time" => [ "type" => "string" "description" => "Heure HH:MM si non incluse dans l’expression (défaut: 09:00)." "default" => "09:00" ] "timezone" => [ "type" => "string" "description" => "Timezone IANA (ex: "Europe/Paris", "Asia/Seoul"). Défaut: timezone serveur." ] "base_date" => [ "type" => "string" "format" => "date-time" "description" => "Date de base pour une expression relative (défaut: maintenant)." ] ] ] ] [ "name" => "rdv_deplacer" "description" => "Déplacer (replanifier) un RDV par ID vers une nouvelle date ISO8601." "input_schema" => [ "type" => "object" "required" => [ "id" "date_iso" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "date_iso" => [ "type" => "string" "format" => "date-time" "description" => "Nouvelle date/heure ISO" ] "timezone" => [ "type" => "string" "description" => "TZ IANA pour homogénéiser si besoin" ] ] ] ] [ "name" => "envoyer_email" "description" => "Envoyer un e-mail avec sujet, corps (HTML/texte) et pièces jointes facultatives." "input_schema" => [ "type" => "object" "properties" => [ "to" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "email" => [ "type" => "string" ] "name" => [ "type" => "string" ] ] "required" => [ "email" ] "additionalProperties" => false ] "minItems" => 1 ] "subject" => [ "type" => "string" "minLength" => 1 ] "htmlContent" => [ "type" => "string" ] "textContent" => [ "type" => "string" ] "from" => [ "type" => "string" ] "attachments" => [ "type" => "array" "items" => [ "type" => "object" "properties" => [ "path" => [ "type" => "string" ] "content" => [ "type" => "string" "description" => "base64" ] "filename" => [ "type" => "string" ] "mimeType" => [ "type" => "string" ] ] "anyOf" => [ [ "required" => [ "path" ] ] [ "required" => [ "content" "filename" ] ] ] "additionalProperties" => false ] ] ] "required" => [ "to" "subject" ] ] ] [ "name" => "gerer_client" "description" => "Créer / récupérer / mettre à jour un client, lister ses rendez-vous." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" "get_rdvs" ] "description" => "Action à effectuer" ] "client" => [ "type" => "object" "description" => "Données du client" "properties" => [ "client_id" => [ "type" => "integer" ] "prenom" => [ "type" => "string" ] "nom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] ] ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_entreprise" "description" => "Créer/mettre à jour/récupérer l'entreprise liée à l'utilisateur courant." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "inserer" "recuperer" "mettre_a_jour" ] "description" => "Action à effectuer" ] "entreprise" => [ "type" => "object" "description" => "Champs de l’entreprise à insérer/mettre à jour" "properties" => [ "nom" => [ "type" => "string" ] "adresse" => [ "type" => "string" ] "codePostal" => [ "type" => "string" ] "ville" => [ "type" => "string" ] "pays" => [ "type" => "string" ] "siret" => [ "type" => "string" ] "tvaIntracom" => [ "type" => "string" ] "email" => [ "type" => "string" ] "telephone" => [ "type" => "string" ] "iban" => [ "type" => "string" ] "bic" => [ "type" => "string" ] "siteWeb" => [ "type" => "string" ] "sector" => [ "type" => "string" ] "doctorSpeciality" => [ "type" => "string" ] "rpps" => [ "type" => "string" ] "amNumber" => [ "type" => "string" ] "medecinParentFirstname" => [ "type" => "string" ] "medecinParentLastname" => [ "type" => "string" ] "medecinParentType" => [ "type" => "string" ] "medecinParentRpps" => [ "type" => "string" ] "isMedecinRemplacant" => [ "type" => "boolean" ] "signatureFile" => [ "type" => "string" "description" => "base64" ] "signatureFilename" => [ "type" => "string" ] "signatureFileSize" => [ "type" => "integer" ] ] "additionalProperties" => true ] ] "required" => [ "action" ] ] ] [ "name" => "gerer_rappel" "description" => "Créer ou récupérer un rappel (message, date/heure, type). Pour créer un rappel, utilise action="creer" avec le message et la date/heure." "input_schema" => [ "type" => "object" "properties" => [ "action" => [ "type" => "string" "enum" => [ "creer" "recuperer" ] "description" => "Action à effectuer: "creer" pour créer un nouveau rappel, "recuperer" pour récupérer un rappel existant" ] "message" => [ "type" => "string" "description" => "Texte du rappel (requis pour action=creer). Ex: "Rappel soin botox"" ] "remind_at" => [ "type" => "string" "format" => "date-time" "description" => "Date/heure ISO8601 (ex: 2025-09-16T10:00:00+02:00) pour action=creer" ] "type" => [ "type" => "string" "enum" => [ "email" "sms" "whatsapp" ] "description" => "Canal de notification (optionnel, défaut: whatsapp)" "default" => "whatsapp" ] "rappel_id" => [ "type" => "integer" "description" => "ID du rappel (requis pour action=recuperer)" ] ] "required" => [ "action" ] ] ] [ "name" => "rdv_lister" "description" => "Lister les RDV avec filtres (plage de dates, client), pagination, tri, et regroupement par jour." "input_schema" => [ "type" => "object" "properties" => [ "date_from" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 incluse" ] "date_to" => [ "type" => "string" "format" => "date-time" "description" => "ISO8601 exclue" ] "timezone" => [ "type" => "string" "description" => "IANA TZ (ex: "Asia/Seoul")" ] "client_id" => [ "type" => "integer" "description" => "Filtrer par client ID" ] "client_query" => [ "type" => "string" "description" => "Recherche client si pas d’ID" ] "limit" => [ "type" => "integer" "default" => 50 ] "offset" => [ "type" => "integer" "default" => 0 ] "order" => [ "type" => "string" "enum" => [ "asc" "desc" ] "default" => "asc" ] "group_by_day" => [ "type" => "boolean" "default" => false ] "with_total" => [ "type" => "boolean" "default" => true ] ] ] ] [ "name" => "rdv_supprimer" "description" => "Supprimer un RDV par ID." "input_schema" => [ "type" => "object" "required" => [ "id" ] "properties" => [ "id" => [ "type" => "integer" "description" => "ID du RDV" ] "confirm" => [ "type" => "boolean" "default" => true "description" => "Confirmer la suppression" ] ] ] ] ] "stream" => true ] "timeout" => 30 "max_duration" => 300 ] |
|
Response |
200
[ "info" => [ "header_size" => 1059 "request_size" => 754 "total_time" => 6.238952 "namelookup_time" => 6.2E-5 "connect_time" => 6.2E-5 "pretransfer_time" => 0.000239 "size_upload" => 10330.0 "size_download" => 5974.0 "speed_download" => 957.0 "speed_upload" => 1655.0 "upload_content_length" => 10330.0 "starttransfer_time" => 0.000293 "primary_ip" => "2607:6bc0::10" "primary_port" => 443 "local_ip" => "2001:41d0:a:3134::1" "local_port" => 40482 "http_version" => 3 "protocol" => 2 "scheme" => "HTTPS" "appconnect_time_us" => 62 "connect_time_us" => 62 "namelookup_time_us" => 62 "pretransfer_time_us" => 239 "starttransfer_time_us" => 293 "total_time_us" => 6238952 "effective_method" => "POST" "max_duration" => 300.0 "start_time" => 1758121352.5624 "original_url" => "https://api.anthropic.com/v1/messages" "pause_handler" => Closure(float $duration) {#2493 : "Symfony\Component\HttpClient\Response\CurlResponse" : { : CurlHandle {#2381 …} : Symfony\Component\HttpClient\Internal\CurlClientState {#2426 …} : -9223372036854775669 } } "debug" => """ * Found bundle for host api.anthropic.com: 0x559dd39eff60 [can multiplex]\n * Re-using existing connection! (#0) with host api.anthropic.com\n * Connected to api.anthropic.com (2607:6bc0::10) port 443 (#0)\n * Using Stream ID: 7 (easy handle 0x559dd3aa10c0)\n > POST /v1/messages HTTP/2\r\n Host: api.anthropic.com\r\n x-api-key: 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\r\n anthropic-version: 2023-06-01\r\n content-type: application/json\r\n accept: */*\r\n user-agent: Symfony HttpClient (Curl)\r\n accept-encoding: gzip\r\n tracestate: 4354935@nr=0-0-4354935-466420805-4482c278998eb2ba-53293263b8481ba9-1-1.277222-1758121352562\r\n newrelic: eyJ2IjpbMCwxXSwiZCI6eyJ0eSI6IkFwcCIsImFjIjoiNDM1NDkzNSIsImFwIjoiNDY2NDIwODA1IiwiaWQiOiI0NDgyYzI3ODk5OGViMmJhIiwidHIiOiI1MzI5MzI2M2I4NDgxYmE5IiwidHgiOiI1MzI5MzI2M2I4NDgxYmE5IiwicHIiOjEuMjc3MjIsInNhIjp0cnVlLCJ0aSI6MTc1ODEyMTM1MjU2Mn19\r\n traceparent: 00-000000000000000053293263b8481ba9-4482c278998eb2ba-01\r\n content-length: 10330\r\n \r\n * We are completely uploaded and fine\n < HTTP/2 200 \r\n < date: Wed, 17 Sep 2025 15:02:33 GMT\r\n < content-type: text/event-stream; charset=utf-8\r\n < cf-ray: 98097c358e75b6b4-CDG\r\n < cache-control: no-cache\r\n < anthropic-ratelimit-input-tokens-limit: 30000\r\n < anthropic-ratelimit-input-tokens-remaining: 19000\r\n < anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:55Z\r\n < anthropic-ratelimit-output-tokens-limit: 8000\r\n < anthropic-ratelimit-output-tokens-remaining: 8000\r\n < anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:32Z\r\n < anthropic-ratelimit-requests-limit: 50\r\n < anthropic-ratelimit-requests-remaining: 49\r\n < anthropic-ratelimit-requests-reset: 2025-09-17T15:02:33Z\r\n < anthropic-ratelimit-tokens-limit: 38000\r\n < anthropic-ratelimit-tokens-remaining: 27000\r\n < anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:32Z\r\n < request-id: req_011CTEB8ubizeVPrnyVbgU6M\r\n < strict-transport-security: max-age=31536000; includeSubDomains; preload\r\n < anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8\r\n < x-envoy-upstream-service-time: 910\r\n < via: 1.1 google\r\n < cf-cache-status: DYNAMIC\r\n < x-robots-tag: none\r\n < server: cloudflare\r\n < \r\n """ ] "response_headers" => [ "HTTP/2 200 " "date: Wed, 17 Sep 2025 15:02:33 GMT" "content-type: text/event-stream; charset=utf-8" "cf-ray: 98097c358e75b6b4-CDG" "cache-control: no-cache" "anthropic-ratelimit-input-tokens-limit: 30000" "anthropic-ratelimit-input-tokens-remaining: 19000" "anthropic-ratelimit-input-tokens-reset: 2025-09-17T15:02:55Z" "anthropic-ratelimit-output-tokens-limit: 8000" "anthropic-ratelimit-output-tokens-remaining: 8000" "anthropic-ratelimit-output-tokens-reset: 2025-09-17T15:02:32Z" "anthropic-ratelimit-requests-limit: 50" "anthropic-ratelimit-requests-remaining: 49" "anthropic-ratelimit-requests-reset: 2025-09-17T15:02:33Z" "anthropic-ratelimit-tokens-limit: 38000" "anthropic-ratelimit-tokens-remaining: 27000" "anthropic-ratelimit-tokens-reset: 2025-09-17T15:02:32Z" "request-id: req_011CTEB8ubizeVPrnyVbgU6M" "strict-transport-security: max-age=31536000; includeSubDomains; preload" "anthropic-organization-id: c366ace8-f74e-430f-865a-b88482ef56d8" "x-envoy-upstream-service-time: 910" "via: 1.1 google" "cf-cache-status: DYNAMIC" "x-robots-tag: none" "server: cloudflare" ] ] |