{"id":214410,"date":"2026-10-29T16:18:24","date_gmt":"2026-10-29T16:18:24","guid":{"rendered":"https:\/\/sinch.com\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/"},"modified":"2026-10-29T16:18:24","modified_gmt":"2026-10-29T16:18:24","slug":"envoyer-sms-api-conversation-curl-nodejs-python","status":"publish","type":"blog","link":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/","title":{"rendered":"Envoyer des SMS avec l&rsquo;API de conversation de Sinch en curl, Node.js et Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/\">API de conversation<\/a> est la m\u00e9thode pour envoyer des SMS avec Sinch. Chaque message passe par un seul point de terminaison, <code>POST https:\/\/{region}.conversation.api.sinch.com\/v1\/projects\/{project_id}\/messages:send<\/code>, et ce m\u00eame point de terminaison couvre RCS, WhatsApp et les autres canaux de messagerie. La requ\u00eate que vous r\u00e9digez aujourd&rsquo;hui pour un message texte aura la m\u00eame structure lorsque vous ajouterez un deuxi\u00e8me canal par la suite. Cet article configure une application d&rsquo;API de conversation avec le canal SMS et envoie un message de trois fa\u00e7ons diff\u00e9rentes\u00a0: avec <code>curl<\/code>, avec le SDK Node.js et avec le SDK Python. Choisissez celle qui correspond \u00e0 votre stack. Il s&rsquo;agit \u00e0 chaque fois d&rsquo;un petit script unique que vous pouvez ex\u00e9cuter depuis votre terminal.<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-3052\"><p class=\"h5 m-0\" id=\"toc-title-3052\">Table des mati\u00e8res<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#ce-dont-vous-aurez-besoin\">Ce dont vous aurez besoin<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#configurer-une-application-dapi-de-conversation\">Configurer une application d&rsquo;API de conversation<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#envoyer-un-sms-avec-curl\">Envoyer un SMS avec curl<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#envoyer-un-sms-avec-node-js\">Envoyer un SMS avec Node.js<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#envoyer-un-sms-avec-python\">Envoyer un SMS avec Python<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#accepte-ne-signifie-pas-livre\">Accept\u00e9 ne signifie pas livr\u00e9<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#pourquoi-la-requete-se-presente-ainsi\">Pourquoi la requ\u00eate se pr\u00e9sente ainsi<\/a><a class=\"scrollme link-body-color\" href=\"#oauth-2-0-au-lieu-de-lauthentification-de-base\">OAuth 2.0 au lieu de l&rsquo;authentification de base<\/a><a class=\"scrollme link-body-color\" href=\"#identified_by-au-lieu-de-contact_id\">identified_by au lieu de contact_id<\/a><a class=\"scrollme link-body-color\" href=\"#definir-sms_sender-a-chaque-fois\">D\u00e9finir SMS_SENDER \u00e0 chaque fois<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">08<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#diriger-votre-agent-de-codage-vers-la-bonne-api\">Diriger votre agent de codage vers la bonne API<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">09<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#resolution-de-problemes\">R\u00e9solution de probl\u00e8mes<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">10<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#prochaines-etapes\">Prochaines \u00e9tapes<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">11<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#ressources-complementaires\">Ressources compl\u00e9mentaires<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Ce dont vous aurez besoin<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un compte Sinch (<a href=\"https:\/\/dashboard.sinch.com\/signup\">S&rsquo;inscrire<\/a>). Les nouveaux comptes sont fournis avec un num\u00e9ro de test.<\/li>\n\n\n\n<li>Un t\u00e9l\u00e9phone capable de recevoir des SMS. Les comptes d&rsquo;essai peuvent limiter les num\u00e9ros auxquels vous pouvez envoyer des messages. V\u00e9rifiez donc le destinataire dans les param\u00e8tres de votre compte depuis le tableau de bord.<\/li>\n\n\n\n<li>Vous avez besoin de <code>curl<\/code> et de <code>jq<\/code> pour la version shell, de Node.js 20 ou sup\u00e9rieur pour Node.js, ou de Python 3.9 ou sup\u00e9rieur pour Python.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Configurer une application d&rsquo;API de conversation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;API de conversation envoie des messages depuis une <strong>application<\/strong>. L&rsquo;application contient les canaux que vous avez connect\u00e9s, et le canal SMS relie l&rsquo;application \u00e0 l&rsquo;abonnement du service SMS auquel appartient votre num\u00e9ro.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dans le <a href=\"https:\/\/dashboard.sinch.com\">tableau de bord Sinch<\/a>, ouvrez <strong>API de conversation<\/strong> dans le menu de gauche. Acceptez les conditions et cliquez sur <strong>OBTENIR L&rsquo;ACC\u00c8S<\/strong> si vous ne l&rsquo;avez jamais utilis\u00e9e auparavant.<\/li>\n\n\n\n<li>Acc\u00e9dez \u00e0 <strong>Param\u00e8tres<\/strong>, puis \u00e0 <strong>Cl\u00e9s d&rsquo;acc\u00e8s<\/strong>, et cr\u00e9ez une cl\u00e9 d&rsquo;acc\u00e8s. Copiez l&rsquo;ID de la cl\u00e9 et le secret de la cl\u00e9. Le secret ne s&rsquo;affiche qu&rsquo;une seule fois.<\/li>\n\n\n\n<li>Acc\u00e9dez \u00e0 <strong>API de conversation<\/strong>, puis \u00e0 <strong>Applications<\/strong>, et cr\u00e9ez une application. Choisissez la r\u00e9gion qui correspond \u00e0 votre abonnement de service SMS\u00a0: US, EU ou Br\u00e9sil. Copiez l&rsquo;ID de l&rsquo;application.<\/li>\n\n\n\n<li>Dans l&rsquo;application, cliquez sur <strong>CONFIGURER LE CANAL<\/strong> sur la ligne <strong>SMS<\/strong>, choisissez votre abonnement dans la liste d\u00e9roulante et confirmez.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Voici d&rsquo;o\u00f9 provient chaque valeur\u00a0:<\/p>\n\n\n\n<figure tabindex=\"0\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Variable d&rsquo;environnement<\/th><th>O\u00f9 la trouver<\/th><\/tr><\/thead><tbody><tr><td><code>SINCH_PROJECT_ID<\/code><\/td><td><strong>Param\u00e8tres<\/strong>, <strong>Param\u00e8tres du projet<\/strong><\/td><\/tr><tr><td><code>SINCH_KEY_ID<\/code>, <code>SINCH_KEY_SECRET<\/code><\/td><td><strong>Param\u00e8tres<\/strong>, <strong>Cl\u00e9s d&rsquo;acc\u00e8s<\/strong><\/td><\/tr><tr><td><code>SINCH_APP_ID<\/code><\/td><td><strong>API de conversation<\/strong>, <strong>Applications<\/strong>. L&rsquo;ID de l&rsquo;application, pas l&rsquo;ID du projet<\/td><\/tr><tr><td><code>SINCH_SMS_SENDER<\/code><\/td><td><strong>Num\u00e9ros<\/strong>, <strong>Vos num\u00e9ros<\/strong>. Le num\u00e9ro attribu\u00e9 \u00e0 l&rsquo;abonnement, au format E.164<\/td><\/tr><tr><td><code>SINCH_REGION<\/code><\/td><td>La r\u00e9gion dans laquelle vous avez cr\u00e9\u00e9 l&rsquo;application\u00a0: <code>us<\/code>, <code>eu<\/code> ou <code>br<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Exportez-les dans votre shell\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-85afc00f177ada6c90d60ae5dbf218f4_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-85afc00f177ada6c90d60ae5dbf218f4_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-85afc00f177ada6c90d60ae5dbf218f4_code_0\" role=\"tabpanel\" aria-labelledby=\"block-85afc00f177ada6c90d60ae5dbf218f4_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-85afc00f177ada6c90d60ae5dbf218f4_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-85afc00f177ada6c90d60ae5dbf218f4_code_0_content\" class=\"language-shell\">\r\n\r\n                                    export SINCH_PROJECT_ID=&quot;YOUR_PROJECT_ID&quot;\r\nexport SINCH_KEY_ID=&quot;YOUR_KEY_ID&quot;\r\nexport SINCH_KEY_SECRET=&quot;YOUR_KEY_SECRET&quot;\r\nexport SINCH_APP_ID=&quot;YOUR_APP_ID&quot;\r\nexport SINCH_SMS_SENDER=&quot;+12025550123&quot;\r\nexport SINCH_REGION=&quot;us&quot;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Conservez le secret de la cl\u00e9 en dehors de votre syst\u00e8me de contr\u00f4le de version. En production, chargez-le depuis un gestionnaire de secrets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Envoyer un SMS avec curl<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Deux requ\u00eates. La premi\u00e8re \u00e9change votre cl\u00e9 d&rsquo;acc\u00e8s contre un jeton OAuth 2.0 provenant de <code>https:\/\/auth.sinch.com\/oauth2\/token<\/code>, qui reste valide pendant environ une heure. La seconde envoie le message au point de terminaison <code>messages:send<\/code> dans la r\u00e9gion de votre application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez ceci sous le nom <code>send-sms.sh<\/code>\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0\" role=\"tabpanel\" aria-labelledby=\"block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-1c27ac3190fadcc97c0eb26f86cbaff0_code_0_content\" class=\"language-shell\">\r\n\r\n                                    #!\/usr\/bin\/env bash\r\n# Send one SMS with the Sinch Conversation API using curl and jq.\r\n# Usage: bash send-sms.sh +15551234567 &quot;Hello from Sinch&quot;\r\nset -euo pipefail\r\n\r\n: &quot;${SINCH_PROJECT_ID:?Set SINCH_PROJECT_ID}&quot;\r\n: &quot;${SINCH_KEY_ID:?Set SINCH_KEY_ID}&quot;\r\n: &quot;${SINCH_KEY_SECRET:?Set SINCH_KEY_SECRET}&quot;\r\n: &quot;${SINCH_APP_ID:?Set SINCH_APP_ID}&quot;\r\n: &quot;${SINCH_SMS_SENDER:?Set SINCH_SMS_SENDER}&quot;\r\nregion=&quot;${SINCH_REGION:-us}&quot;\r\n\r\nto=&quot;${1:?Usage: send-sms.sh  }&quot;\r\ntext=&quot;${2:?Usage: send-sms.sh  }&quot;\r\n\r\nif [[ ! &quot;$to&quot; =~ ^\\+[1-9][0-9]{1,14}$ ]]; then\r\n  echo &quot;Use E.164 format for the number, for example +15551234567. Got: $to&quot; &gt;&amp;2\r\n  exit 1\r\nfi\r\n\r\naccess_token=$(curl --silent --show-error --fail-with-body \\\r\n  https:\/\/auth.sinch.com\/oauth2\/token \\\r\n  --user &quot;$SINCH_KEY_ID:$SINCH_KEY_SECRET&quot; \\\r\n  --data grant_type=client_credentials | jq -r .access_token)\r\n\r\nbody=$(jq -n \\\r\n  --arg app_id &quot;$SINCH_APP_ID&quot; \\\r\n  --arg to &quot;$to&quot; \\\r\n  --arg text &quot;$text&quot; \\\r\n  --arg sender &quot;$SINCH_SMS_SENDER&quot; \\\r\n  &#039;{\r\n    app_id: $app_id,\r\n    recipient: { identified_by: { channel_identities: [{ channel: &quot;SMS&quot;, identity: $to }] } },\r\n    message: { text_message: { text: $text } },\r\n    channel_properties: { SMS_SENDER: $sender }\r\n  }&#039;)\r\n\r\ncurl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/$region.conversation.api.sinch.com\/v1\/projects\/$SINCH_PROJECT_ID\/messages:send&quot; \\\r\n  --header &quot;Authorization: Bearer $access_token&quot; \\\r\n  --header &quot;Content-Type: application\/json&quot; \\\r\n  --data &quot;$body&quot;\r\necho\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Cr\u00e9er le corps de la requ\u00eate avec <code>jq<\/code> \u00e9vite que les guillemets et les retours \u00e0 la ligne de votre message ne cassent le JSON. Ex\u00e9cutez-le avec votre propre num\u00e9ro\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-260a51ba5d380a1e7c3176d461402dbd_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-260a51ba5d380a1e7c3176d461402dbd_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-260a51ba5d380a1e7c3176d461402dbd_code_0\" role=\"tabpanel\" aria-labelledby=\"block-260a51ba5d380a1e7c3176d461402dbd_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-260a51ba5d380a1e7c3176d461402dbd_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-260a51ba5d380a1e7c3176d461402dbd_code_0_content\" class=\"language-shell\">\r\n\r\n                                    bash send-sms.sh +15551234567 &quot;Hello from the Sinch Conversation API&quot;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-9b244d4cade43af2142fd62ebffcadd7_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-9b244d4cade43af2142fd62ebffcadd7_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-9b244d4cade43af2142fd62ebffcadd7_code_0\" role=\"tabpanel\" aria-labelledby=\"block-9b244d4cade43af2142fd62ebffcadd7_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-9b244d4cade43af2142fd62ebffcadd7_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-9b244d4cade43af2142fd62ebffcadd7_code_0_content\" class=\"language-shell\">\r\n\r\n                                    {&quot;message_id&quot;:&quot;01M613QSW2Q112R8FYHW29E5K9&quot;,&quot;accepted_time&quot;:&quot;2026-10-28T11:18:46.402Z&quot;}\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Le corps de la requ\u00eate comporte trois parties que vous utiliserez \u00e0 chaque envoi\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>recipient.identified_by.channel_identities<\/code> indique qui re\u00e7oit le message et sur quel canal. Pour les SMS, l&rsquo;identit\u00e9 est le num\u00e9ro de t\u00e9l\u00e9phone.<\/li>\n\n\n\n<li><code>message.text_message.text<\/code> repr\u00e9sente le message. Le m\u00eame objet <code>message<\/code> transporte les m\u00e9dias, les cartes et les autres types sur les canaux qui les prennent en charge.<\/li>\n\n\n\n<li><code>channel_properties.SMS_SENDER<\/code> est le num\u00e9ro d&rsquo;o\u00f9 provient le message. Vous pouvez l&rsquo;omettre si votre abonnement dispose d&rsquo;un exp\u00e9diteur par d\u00e9faut. D\u00e9finissez-le tout de m\u00eame tant que vous utilisez le num\u00e9ro de test.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Envoyer un SMS avec Node.js<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/github.com\/sinch\/sinch-sdk-node\">Le SDK Node.js de Sinch<\/a> g\u00e8re le jeton pour vous. Installez-le avec TypeScript et <code>tsx<\/code>\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-9b5be1e5c239b012294f70a1e8f4b59f_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-9b5be1e5c239b012294f70a1e8f4b59f_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-9b5be1e5c239b012294f70a1e8f4b59f_code_0\" role=\"tabpanel\" aria-labelledby=\"block-9b5be1e5c239b012294f70a1e8f4b59f_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-9b5be1e5c239b012294f70a1e8f4b59f_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-9b5be1e5c239b012294f70a1e8f4b59f_code_0_content\" class=\"language-shell\">\r\n\r\n                                    npm init -y\r\nnpm pkg set type=module\r\nnpm install @sinch\/sdk-core@1.7.0\r\nnpm install --save-dev typescript@5.9 tsx @types\/node@24\r\nmkdir -p src\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez ceci sous le nom <code>src\/send-sms.ts<\/code>\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-c6da9919ad1cd280e1b0af56c18588ce_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-c6da9919ad1cd280e1b0af56c18588ce_code_0\" aria-selected=\"true\">\r\n                                Javascript                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-c6da9919ad1cd280e1b0af56c18588ce_code_0\" role=\"tabpanel\" aria-labelledby=\"block-c6da9919ad1cd280e1b0af56c18588ce_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-c6da9919ad1cd280e1b0af56c18588ce_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-Javascript\" tabindex=\"0\">\r\n                                <code id=\"block-c6da9919ad1cd280e1b0af56c18588ce_code_0_content\" class=\"language-Javascript\">\r\n\r\n                                    import { SinchClient } from &quot;@sinch\/sdk-core&quot;;\r\n\r\nfunction requireEnv(name: string): string {\r\n  const value = process.env[name];\r\n  if (!value) {\r\n    throw new Error(`Set the ${name} environment variable`);\r\n  }\r\n  return value;\r\n}\r\n\r\nconst [to, text] = process.argv.slice(2);\r\nif (!to || !text) {\r\n  throw new Error(&#039;Usage: npm run send --  &quot;&quot;&#039;);\r\n}\r\nif (!\/^\\+[1-9]\\d{1,14}$\/.test(to)) {\r\n  throw new Error(`Use E.164 format for the number, for example +15551234567. Got: ${to}`);\r\n}\r\n\r\nconst sinchClient = new SinchClient({\r\n  projectId: requireEnv(&quot;SINCH_PROJECT_ID&quot;),\r\n  keyId: requireEnv(&quot;SINCH_KEY_ID&quot;),\r\n  keySecret: requireEnv(&quot;SINCH_KEY_SECRET&quot;),\r\n  conversationRegion: process.env.SINCH_REGION ?? &quot;us&quot;,\r\n});\r\n\r\nconst response = await sinchClient.conversation.messages.sendTextMessage({\r\n  sendMessageRequestBody: {\r\n    app_id: requireEnv(&quot;SINCH_APP_ID&quot;),\r\n    recipient: {\r\n      identified_by: {\r\n        channel_identities: [{ channel: &quot;SMS&quot;, identity: to }],\r\n      },\r\n    },\r\n    message: { text_message: { text } },\r\n    channel_properties: { SMS_SENDER: requireEnv(&quot;SINCH_SMS_SENDER&quot;) },\r\n  },\r\n});\r\n\r\nconsole.log(`Accepted message ${response.message_id} at ${response.accepted_time?.toISOString()}`);\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez un script \u00e0 <code>package.json<\/code> et ex\u00e9cutez-le\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-8ac43f6d51be1b177ccc80ac7453da3a_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-8ac43f6d51be1b177ccc80ac7453da3a_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-8ac43f6d51be1b177ccc80ac7453da3a_code_0\" role=\"tabpanel\" aria-labelledby=\"block-8ac43f6d51be1b177ccc80ac7453da3a_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-8ac43f6d51be1b177ccc80ac7453da3a_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-8ac43f6d51be1b177ccc80ac7453da3a_code_0_content\" class=\"language-shell\">\r\n\r\n                                    npm pkg set scripts.send=&quot;tsx src\/send-sms.ts&quot;\r\nnpm run send -- +15551234567 &quot;Hello from the Sinch Node.js SDK&quot;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-bdf50bd22438f50477610c53496d8536_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-bdf50bd22438f50477610c53496d8536_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-bdf50bd22438f50477610c53496d8536_code_0\" role=\"tabpanel\" aria-labelledby=\"block-bdf50bd22438f50477610c53496d8536_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-bdf50bd22438f50477610c53496d8536_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-bdf50bd22438f50477610c53496d8536_code_0_content\" class=\"language-shell\">\r\n\r\n                                    Accepted message 01M613R541V5R0CMSY5BNP4DSA at 2026-10-28T11:18:57.921Z\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Le corps de la requ\u00eate utilise le m\u00eame JSON que la version <code>curl<\/code>, avec les m\u00eames noms de champs en snake_case. <code>sendTextMessage<\/code> est le raccourci typ\u00e9 pour un message texte. <code>conversationRegion<\/code> est d\u00e9fini sur <code>us<\/code> par d\u00e9faut. Vous devez donc le d\u00e9finir si votre application est en <code>eu<\/code> ou en <code>br<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Envoyer un SMS avec Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/github.com\/sinch\/sinch-sdk-python\">Le SDK Python de Sinch<\/a> prend en charge l&rsquo;API de conversation \u00e0 partir de la version 2.0. Installez-le dans un environnement virtuel\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-5eac397d2d21e5594a0b58cbedae456f_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-5eac397d2d21e5594a0b58cbedae456f_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-5eac397d2d21e5594a0b58cbedae456f_code_0\" role=\"tabpanel\" aria-labelledby=\"block-5eac397d2d21e5594a0b58cbedae456f_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-5eac397d2d21e5594a0b58cbedae456f_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-5eac397d2d21e5594a0b58cbedae456f_code_0_content\" class=\"language-shell\">\r\n\r\n                                    python3 -m venv .venv\r\nsource .venv\/bin\/activate\r\npip install sinch==2.3.0\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez ceci sous le nom <code>send_sms.py<\/code>\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-0719b815f5e1de3c59ea58587c3a19bf_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-0719b815f5e1de3c59ea58587c3a19bf_code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-0719b815f5e1de3c59ea58587c3a19bf_code_0\" role=\"tabpanel\" aria-labelledby=\"block-0719b815f5e1de3c59ea58587c3a19bf_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-0719b815f5e1de3c59ea58587c3a19bf_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-Python\" tabindex=\"0\">\r\n                                <code id=\"block-0719b815f5e1de3c59ea58587c3a19bf_code_0_content\" class=\"language-Python\">\r\n\r\n                                    import os\r\nimport re\r\nimport sys\r\n\r\nfrom sinch import SinchClient\r\nfrom sinch.core.exceptions import SinchException\r\n\r\n\r\ndef require_env(name: str) -&gt; str:\r\n    value = os.environ.get(name)\r\n    if not value:\r\n        sys.exit(f&quot;Set the {name} environment variable&quot;)\r\n    return value\r\n\r\n\r\nif len(sys.argv) != 3:\r\n    sys.exit(&#039;Usage: python send_sms.py  &quot;&quot;&#039;)\r\n\r\nto, text = sys.argv[1], sys.argv[2]\r\nif not re.fullmatch(r&quot;\\+[1-9]\\d{1,14}&quot;, to):\r\n    sys.exit(f&quot;Use E.164 format for the number, for example +15551234567. Got: {to}&quot;)\r\n\r\nsinch_client = SinchClient(\r\n    project_id=require_env(&quot;SINCH_PROJECT_ID&quot;),\r\n    key_id=require_env(&quot;SINCH_KEY_ID&quot;),\r\n    key_secret=require_env(&quot;SINCH_KEY_SECRET&quot;),\r\n    conversation_region=os.environ.get(&quot;SINCH_REGION&quot;, &quot;us&quot;),\r\n)\r\n\r\ntry:\r\n    response = sinch_client.conversation.messages.send_text_message(\r\n        app_id=require_env(&quot;SINCH_APP_ID&quot;),\r\n        text=text,\r\n        recipient_identities=[{&quot;channel&quot;: &quot;SMS&quot;, &quot;identity&quot;: to}],\r\n        channel_properties={&quot;SMS_SENDER&quot;: require_env(&quot;SINCH_SMS_SENDER&quot;)},\r\n    )\r\nexcept SinchException as error:\r\n    sys.exit(f&quot;Sinch API error: {error}&quot;)\r\n\r\nprint(f&quot;Accepted message {response.message_id} at {response.accepted_time}&quot;)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-59f689ac3b364d809cc63089b5c765ef_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-59f689ac3b364d809cc63089b5c765ef_code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-59f689ac3b364d809cc63089b5c765ef_code_0\" role=\"tabpanel\" aria-labelledby=\"block-59f689ac3b364d809cc63089b5c765ef_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-59f689ac3b364d809cc63089b5c765ef_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-Python\" tabindex=\"0\">\r\n                                <code id=\"block-59f689ac3b364d809cc63089b5c765ef_code_0_content\" class=\"language-Python\">\r\n\r\n                                    python send_sms.py +15551234567 &quot;Hello from the Sinch Python SDK&quot;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-35c4089d6d7b2346a31431eb27ba82f2_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-35c4089d6d7b2346a31431eb27ba82f2_code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-35c4089d6d7b2346a31431eb27ba82f2_code_0\" role=\"tabpanel\" aria-labelledby=\"block-35c4089d6d7b2346a31431eb27ba82f2_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-35c4089d6d7b2346a31431eb27ba82f2_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-Python\" tabindex=\"0\">\r\n                                <code id=\"block-35c4089d6d7b2346a31431eb27ba82f2_code_0_content\" class=\"language-Python\">\r\n\r\n                                    Accepted message 01M613R7AK2SST6VXH24HVF278 at 2026-10-28 11:19:00.179000+00:00\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Le SDK Python utilise des arguments nomm\u00e9s au lieu d&rsquo;un corps de requ\u00eate. D\u00e9finissez <code>conversation_region<\/code> \u00e0 chaque fois\u00a0: le client Python n&rsquo;a pas de r\u00e9gion par d\u00e9faut pour l&rsquo;API de conversation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Accept\u00e9 ne signifie pas livr\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une r\u00e9ponse <code>200<\/code> avec un <code>message_id<\/code> signifie que Sinch a accept\u00e9 le message. La confirmation que le t\u00e9l\u00e9phone l&rsquo;a bien re\u00e7u arrive plus tard, sous la forme d&rsquo;un rapport de livraison envoy\u00e9 \u00e0 un webhook sur votre application. Pour les SMS, le statut du rapport passe de <code>QUEUED_ON_CHANNEL<\/code> \u00e0 <code>DELIVERED<\/code> ou <code>FAILED<\/code>. Le num\u00e9ro de t\u00e9l\u00e9phone dans le rapport est renvoy\u00e9 sans le <code>+<\/code> initial. Normalisez donc les num\u00e9ros avant d&rsquo;associer les rapports aux destinataires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour obtenir des rapports, ajoutez un webhook \u00e0 l&rsquo;application avec le d\u00e9clencheur <code>MESSAGE_DELIVERY<\/code>. Dans le tableau de bord, ouvrez l&rsquo;application et ajoutez-le sous <strong>Webhooks<\/strong>. Avec l&rsquo;API, obtenez un jeton et effectuez une requ\u00eate\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-acd576de1f6235ea3436fc13e9ae5129_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-acd576de1f6235ea3436fc13e9ae5129_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-acd576de1f6235ea3436fc13e9ae5129_code_0\" role=\"tabpanel\" aria-labelledby=\"block-acd576de1f6235ea3436fc13e9ae5129_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-acd576de1f6235ea3436fc13e9ae5129_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-acd576de1f6235ea3436fc13e9ae5129_code_0_content\" class=\"language-shell\">\r\n\r\n                                    SINCH_ACCESS_TOKEN=$(curl --silent --show-error --fail-with-body \\\r\n  https:\/\/auth.sinch.com\/oauth2\/token \\\r\n  --user &quot;$SINCH_KEY_ID:$SINCH_KEY_SECRET&quot; \\\r\n  --data grant_type=client_credentials | jq -r .access_token)\r\n\r\ncurl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/$SINCH_REGION.conversation.api.sinch.com\/v1\/projects\/$SINCH_PROJECT_ID\/webhooks&quot; \\\r\n  --header &quot;Authorization: Bearer $SINCH_ACCESS_TOKEN&quot; \\\r\n  --header &quot;Content-Type: application\/json&quot; \\\r\n  --data &#039;{\r\n    &quot;app_id&quot;: &quot;YOUR_APP_ID&quot;,\r\n    &quot;target&quot;: &quot;https:\/\/example.com\/sinch\/callbacks&quot;,\r\n    &quot;target_type&quot;: &quot;HTTP&quot;,\r\n    &quot;triggers&quot;: [&quot;MESSAGE_DELIVERY&quot;, &quot;MESSAGE_INBOUND&quot;]\r\n  }&#039;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\"><code>MESSAGE_INBOUND<\/code> vous envoie \u00e9galement les r\u00e9ponses. Un rapport en \u00e9chec inclut un motif <code>reason<\/code> avec un code qui vous en indique la cause. C&rsquo;est ici qu&rsquo;appara\u00eet un num\u00e9ro d&rsquo;exp\u00e9diteur rejet\u00e9 ou un destinataire auquel votre compte ne peut pas envoyer de message. Sinch r\u00e9essaie d&rsquo;appeler un webhook qui ne r\u00e9pond pas avec un code <code>2xx<\/code>. Le gestionnaire doit donc pouvoir g\u00e9rer la r\u00e9ception du m\u00eame rapport deux fois.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi la requ\u00eate se pr\u00e9sente ainsi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Certains choix dans ces scripts m\u00e9ritent d&rsquo;\u00eatre expliqu\u00e9s, car la documentation pr\u00e9sente d&rsquo;autres options.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OAuth 2.0 au lieu de l&rsquo;authentification de base<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;API de conversation accepte \u00e9galement l&rsquo;ID et le secret de votre cl\u00e9 en tant qu&rsquo;authentification de base directement sur <code>messages:send<\/code>. Le guide de d\u00e9marrage l&rsquo;utilise pour le premier appel. L&rsquo;authentification de base est fortement limit\u00e9e en termes de fr\u00e9quence et est con\u00e7ue pour les tests. La requ\u00eate de jeton repr\u00e9sente un appel suppl\u00e9mentaire, mais les SDK la font pour vous et c&rsquo;est ce que vous ex\u00e9cuterez en production. Le script <code>curl<\/code> l&rsquo;utilise donc d\u00e8s le d\u00e9part.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>identified_by<\/code> au lieu de <code>contact_id<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez adresser un message \u00e0 un num\u00e9ro de t\u00e9l\u00e9phone avec <code>identified_by<\/code>, ou \u00e0 un contact pr\u00e9alablement enregistr\u00e9 par l&rsquo;API avec <code>contact_id<\/code>. Les applications cr\u00e9\u00e9es apr\u00e8s le 16 avril 2025 sont par d\u00e9faut en mode <strong>Dispatch<\/strong>. Ce mode n&rsquo;enregistre pas les contacts, de sorte que <code>contact_id<\/code> n&rsquo;a aucun \u00e9l\u00e9ment vers lequel pointer. <code>identified_by<\/code> fonctionne dans les deux modes. Passez l&rsquo;application en mode <strong>Conversation<\/strong> si vous souhaitez que les contacts et l&rsquo;historique des conversations soient enregistr\u00e9s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9finir <code>SMS_SENDER<\/code> \u00e0 chaque fois<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sans <code>SMS_SENDER<\/code>, le message est envoy\u00e9 depuis l&rsquo;exp\u00e9diteur par d\u00e9faut de l&rsquo;abonnement, s&rsquo;il y en a un. Vous devez le d\u00e9finir pour le num\u00e9ro de test sur un nouveau compte. Un exp\u00e9diteur rejet\u00e9 par le r\u00e9seau ne fait pas \u00e9chouer la requ\u00eate HTTP\u00a0: cela s&rsquo;affiche plus tard sous la forme d&rsquo;un rapport de livraison <code>FAILED<\/code>. Le fait de le d\u00e9finir explicitement rend l&rsquo;exp\u00e9diteur visible dans votre code plut\u00f4t que dans un param\u00e8tre du tableau de bord.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Diriger votre agent de codage vers la bonne API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les agents de codage se sont form\u00e9s sur des ann\u00e9es d&rsquo;exemples sur le web, dont beaucoup utilisent l&rsquo;ancienne API SMS (XMS) autonome. Cette API a atteint sa <a href=\"https:\/\/github.com\/sinch\/sinch-sdk-node#readme\">fin de commercialisation<\/a> le 15 avril 2026, et elle reste disponible uniquement pour les int\u00e9grations d\u00e9j\u00e0 d\u00e9velopp\u00e9es dessus. Tout nouveau projet doit utiliser l&rsquo;API de conversation, m\u00eame sur un compte qui a d\u00e9j\u00e0 utilis\u00e9 l&rsquo;API SMS par le pass\u00e9. Si vous avez du code bas\u00e9 sur l&rsquo;API SMS, <a href=\"https:\/\/sinch.com\/fr\/blog\/migrer-api-sms-xms-vers-api-de-conversation\/\">Migrer de l&rsquo;API SMS de Sinch vers l&rsquo;API de conversation<\/a> en fait la correspondance champ par champ.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous demandez \u00e0 un agent d&rsquo;\u00ab\u00a0envoyer un SMS avec Sinch\u00a0\u00bb et qu&rsquo;il \u00e9crit du code pour <code>\/xms\/v1\/<\/code>, pr\u00e9cisez-lui l&rsquo;API que vous souhaitez. Une ligne dans le fichier <code>AGENTS.md<\/code> ou <code>CLAUDE.md<\/code> de votre projet permet de le faire pour chaque session\u00a0:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#block-1eb6c6a4287c0d3f40e22221654061a1_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-1eb6c6a4287c0d3f40e22221654061a1_code_0\" aria-selected=\"true\">\r\n                                Shell                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"block-1eb6c6a4287c0d3f40e22221654061a1_code_0\" role=\"tabpanel\" aria-labelledby=\"block-1eb6c6a4287c0d3f40e22221654061a1_code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#block-1eb6c6a4287c0d3f40e22221654061a1_code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/sinch.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                                                        <pre class=\"w-100 h-100 m-0 line-numbers language-shell\" tabindex=\"0\">\r\n                                <code id=\"block-1eb6c6a4287c0d3f40e22221654061a1_code_0_content\" class=\"language-shell\">\r\n\r\n                                    ## Sinch\r\n- Send SMS with the Sinch Conversation API (`\/v1\/projects\/{project_id}\/messages:send`), not the SMS API (`\/xms\/v1\/`).\r\n- Use `@sinch\/sdk-core` (Node.js) or `sinch` (Python), with project ID, key ID, and key secret.\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Le <a href=\"https:\/\/github.com\/sinch\/skills\">Les skills d&rsquo;agent Sinch<\/a> vont plus loin. Elles fournissent \u00e0 votre agent les structures de requ\u00eate de l&rsquo;API de conversation, les r\u00e8gles du canal SMS et les \u00e9tapes de configuration. Le <a href=\"https:\/\/github.com\/sinch\/sinch-plugins\">Les plugins Sinch<\/a> pour Claude Code, Cursor et l&rsquo;interface de ligne de commande Gemini regroupent ces skills avec le <a href=\"https:\/\/github.com\/sinch\/sinch-mcp-server\">serveur MCP Sinch<\/a>, qui envoie \u00e9galement des SMS via l&rsquo;API de conversation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9solution de probl\u00e8mes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>404<\/code> depuis <code>messages:send<\/code><\/strong>. La r\u00e9gion dans l&rsquo;URL ne correspond pas \u00e0 la r\u00e9gion de l&rsquo;application. Une application cr\u00e9\u00e9e dans l&rsquo;UE n&rsquo;est joignable que sur <code>eu.conversation.api.sinch.com<\/code>. V\u00e9rifiez la r\u00e9gion dans les param\u00e8tres de l&rsquo;application et d\u00e9finissez <code>SINCH_REGION<\/code> en cons\u00e9quence.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>401<\/code> depuis le point de terminaison du jeton<\/strong>. L&rsquo;ID de la cl\u00e9 ou le secret est incorrect, ou bien vous avez utilis\u00e9 un ID de projet \u00e0 la place de l&rsquo;ID de la cl\u00e9. Les cl\u00e9s d&rsquo;acc\u00e8s se trouvent sous <strong>Param\u00e8tres<\/strong>, <strong>Cl\u00e9s d&rsquo;acc\u00e8s<\/strong>. Si vous avez perdu le secret, cr\u00e9ez une nouvelle cl\u00e9.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>400<\/code> mentionnant le canal. <\/strong>Le canal SMS n&rsquo;est pas configur\u00e9 sur l&rsquo;application, ou le canal n&rsquo;est pas associ\u00e9 \u00e0 un abonnement. Ouvrez l&rsquo;application et v\u00e9rifiez la ligne <strong>SMS<\/strong>.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L&rsquo;API a accept\u00e9 le message mais rien n&rsquo;est arriv\u00e9<\/strong>. Consultez le rapport de livraison pour le <code>message_id<\/code>. Sur un compte d&rsquo;essai, v\u00e9rifiez que le destinataire correspond \u00e0 un num\u00e9ro auquel le compte peut envoyer des messages. Pour les num\u00e9ros am\u00e9ricains, le trafic provenant d&rsquo;un code long \u00e0 10 chiffres n\u00e9cessite l&rsquo;enregistrement d&rsquo;une <a href=\"https:\/\/developers.sinch.com\/docs\/10dlc-registration\">10DLC<\/a> marque et d&rsquo;une campagne.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L&rsquo;application se trouve dans une r\u00e9gion diff\u00e9rente de celle du num\u00e9ro.<\/strong> L&rsquo;application doit se trouver dans la m\u00eame r\u00e9gion que l&rsquo;abonnement du service SMS. S&rsquo;ils ne correspondent pas, cr\u00e9ez une nouvelle application dans la bonne r\u00e9gion et configurez-y le canal SMS.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Prochaines \u00e9tapes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 partir d&rsquo;ici, la m\u00eame requ\u00eate permet d&rsquo;envoyer des messages vers d&rsquo;autres canaux. Ajoutez RCS ou WhatsApp \u00e0 l&rsquo;application, donnez au destinataire une identit\u00e9 pour chaque canal dans <code>channel_identities<\/code>, et d\u00e9finissez <code>channel_priority_order<\/code> sur la requ\u00eate, par exemple <code>[\"RCS\", \"SMS\"]<\/code>. Le <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/keyconcepts\">page des concepts cl\u00e9s<\/a> explique \u00e0 quel moment l&rsquo;API de conversation bascule vers le canal suivant. Si vous avez du code bas\u00e9 sur l&rsquo;API SMS autonome, <a href=\"https:\/\/sinch.com\/fr\/blog\/migrer-api-sms-xms-vers-api-de-conversation\/\">Migrer de l&rsquo;API SMS de Sinch vers l&rsquo;API de conversation<\/a> couvre les lots, les rapports de livraison et les messages entrants.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ressources compl\u00e9mentaires<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/getting-started\">D\u00e9marrer avec l&rsquo;API de conversation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/api-reference\/conversation\">R\u00e9f\u00e9rence de l&rsquo;API de conversation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/channel-support\/sms\/set-up\">Configuration du canal SMS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/channel-support\/sms\/properties\">Propri\u00e9t\u00e9s du canal SMS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/callbacks\">Callbacks de l&rsquo;API de conversation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/sinch\/sinch-sdk-node\">Le SDK Node.js de Sinch<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/sinch\/sinch-sdk-python\">Le SDK Python de Sinch<\/a><\/li>\n<\/ul>\n","protected":false},"author":93,"featured_media":214365,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[],"blog_category":[751],"class_list":["post-214410","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-developpeurs"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Envoyer des SMS avec l&#039;API de conversation de Sinch\u00a0: curl, Node.js, Python<\/title>\n<meta name=\"description\" content=\"Envoyez un SMS avec l&#039;API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Envoyer des SMS avec l&#039;API de conversation de Sinch\u00a0: curl, Node.js, Python\" \/>\n<meta property=\"og:description\" content=\"Envoyez un SMS avec l&#039;API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Sinch\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/wearesinch\/\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1296\" \/>\n\t<meta property=\"og:image:height\" content=\"788\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@WeAreSinch\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/\"},\"author\":{\"name\":\"Gunnar Grosch\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#\\\/schema\\\/person\\\/b2bde1c2728a21bc953ea0e129936c08\"},\"headline\":\"Envoyer des SMS avec l\u2019API de conversation de Sinch en curl, Node.js et Python\",\"datePublished\":\"2026-10-29T16:18:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/\"},\"wordCount\":1961,\"publisher\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png\",\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/\",\"url\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/\",\"name\":\"Envoyer des SMS avec l'API de conversation de Sinch\u00a0: curl, Node.js, Python\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png\",\"datePublished\":\"2026-10-29T16:18:24+00:00\",\"description\":\"Envoyez un SMS avec l'API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png\",\"contentUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png\",\"width\":1296,\"height\":788},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/envoyer-sms-api-conversation-curl-nodejs-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sinch.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/sinch.com\\\/fr\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Envoyer des SMS avec l\u2019API de conversation de Sinch en curl, Node.js et Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/sinch.com\\\/fr\\\/\",\"name\":\"Sinch\",\"description\":\"Messagerie SMS, Voix, Email, Vid\u00e9o & API de v\u00e9rification | Sinch\",\"publisher\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sinch.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#organization\",\"name\":\"Sinch\",\"url\":\"https:\\\/\\\/sinch.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Thumbnail-Logo-Honey.png\",\"contentUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Thumbnail-Logo-Honey.png\",\"width\":800,\"height\":496,\"caption\":\"Sinch\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/wearesinch\\\/\",\"https:\\\/\\\/x.com\\\/WeAreSinch\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sinch\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCZZ2u_B2afTxA0v-xcgfsaw\",\"https:\\\/\\\/www.instagram.com\\\/wearesinch\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sinch.com\\\/fr\\\/#\\\/schema\\\/person\\\/b2bde1c2728a21bc953ea0e129936c08\",\"name\":\"Gunnar Grosch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g\",\"caption\":\"Gunnar Grosch\"},\"description\":\"Gunnar Grosch is a Principal Developer Advocate at Sinch and an engineer with over 25 years of experience building software, scaling developer communities, and making complex technology accessible. He shares code, insights, and lessons through conference talks, blog posts, and open source.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Envoyer des SMS avec l'API de conversation de Sinch\u00a0: curl, Node.js, Python","description":"Envoyez un SMS avec l'API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/","og_locale":"fr_FR","og_type":"article","og_title":"Envoyer des SMS avec l'API de conversation de Sinch\u00a0: curl, Node.js, Python","og_description":"Envoyez un SMS avec l'API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.","og_url":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/","og_site_name":"Sinch","article_publisher":"https:\/\/www.facebook.com\/wearesinch\/","og_image":[{"width":1296,"height":788,"url":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@WeAreSinch","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#article","isPartOf":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/"},"author":{"name":"Gunnar Grosch","@id":"https:\/\/sinch.com\/fr\/#\/schema\/person\/b2bde1c2728a21bc953ea0e129936c08"},"headline":"Envoyer des SMS avec l\u2019API de conversation de Sinch en curl, Node.js et Python","datePublished":"2026-10-29T16:18:24+00:00","mainEntityOfPage":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/"},"wordCount":1961,"publisher":{"@id":"https:\/\/sinch.com\/fr\/#organization"},"image":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#primaryimage"},"thumbnailUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png","inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/","url":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/","name":"Envoyer des SMS avec l'API de conversation de Sinch\u00a0: curl, Node.js, Python","isPartOf":{"@id":"https:\/\/sinch.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#primaryimage"},"image":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#primaryimage"},"thumbnailUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png","datePublished":"2026-10-29T16:18:24+00:00","description":"Envoyez un SMS avec l'API de conversation de Sinch en utilisant curl, Node.js ou Python\u00a0: configurez une application avec le canal SMS, obtenez un jeton et envoyez votre premier message.","breadcrumb":{"@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#primaryimage","url":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png","contentUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Send-sms-conversation-api-curl-nodejs-python-Header.png","width":1296,"height":788},{"@type":"BreadcrumbList","@id":"https:\/\/sinch.com\/fr\/blog\/envoyer-sms-api-conversation-curl-nodejs-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sinch.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/sinch.com\/fr\/blog\/"},{"@type":"ListItem","position":3,"name":"Envoyer des SMS avec l\u2019API de conversation de Sinch en curl, Node.js et Python"}]},{"@type":"WebSite","@id":"https:\/\/sinch.com\/fr\/#website","url":"https:\/\/sinch.com\/fr\/","name":"Sinch","description":"Messagerie SMS, Voix, Email, Vid\u00e9o & API de v\u00e9rification | Sinch","publisher":{"@id":"https:\/\/sinch.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sinch.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/sinch.com\/fr\/#organization","name":"Sinch","url":"https:\/\/sinch.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/sinch.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/09\/Thumbnail-Logo-Honey.png","contentUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/09\/Thumbnail-Logo-Honey.png","width":800,"height":496,"caption":"Sinch"},"image":{"@id":"https:\/\/sinch.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/wearesinch\/","https:\/\/x.com\/WeAreSinch","https:\/\/www.linkedin.com\/company\/sinch","https:\/\/www.youtube.com\/channel\/UCZZ2u_B2afTxA0v-xcgfsaw","https:\/\/www.instagram.com\/wearesinch\/"]},{"@type":"Person","@id":"https:\/\/sinch.com\/fr\/#\/schema\/person\/b2bde1c2728a21bc953ea0e129936c08","name":"Gunnar Grosch","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8f177695c01082754db3f0858d534fdaceedba31f74932d7de39991e5e9d7e8d?s=96&d=mm&r=g","caption":"Gunnar Grosch"},"description":"Gunnar Grosch is a Principal Developer Advocate at Sinch and an engineer with over 25 years of experience building software, scaling developer communities, and making complex technology accessible. He shares code, insights, and lessons through conference talks, blog posts, and open source."}]}},"_links":{"self":[{"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/blog\/214410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/users\/93"}],"version-history":[{"count":0,"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/blog\/214410\/revisions"}],"wp:attachment":[{"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/media?parent=214410"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/tags?post=214410"},{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/sinch.com\/fr\/wp-json\/wp\/v2\/blog_category?post=214410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}