{"id":214405,"date":"2026-10-29T16:18:18","date_gmt":"2026-10-29T16:18:18","guid":{"rendered":"https:\/\/sinch.com\/blog\/migration-von-sms-xms-api-zu-conversation-api\/"},"modified":"2026-10-29T16:18:18","modified_gmt":"2026-10-29T16:18:18","slug":"migration-von-sms-xms-api-zu-conversation-api","status":"publish","type":"blog","link":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/","title":{"rendered":"Von der Sinch SMS-API zur Conversation API migrieren"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wenn Ihr Code an <code>https:\/\/us.sms.api.sinch.com\/xms\/v1\/{service_plan_id}\/batches<\/code> sendet oder <code>sms.batches.send<\/code> in einem Sinch-SDK aufruft, verwendet er die eigenst\u00e4ndige Sinch-SMS-API, die manchmal auch als XMS bezeichnet wird. Der Verkauf der SMS-API wurde am 15. April 2026 eingestellt. Integrationen, die bereits darauf aufbauen, funktionieren weiterhin, aber <a href=\"https:\/\/github.com\/sinch\/sinch-sdk-node#readme\">neue Integrationen sollten die Sinch Conversation API verwenden<\/a>, selbst f\u00fcr ein Konto, das die SMS-API zuvor genutzt hat. Die <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/\">Conversation API<\/a> sendet dieselbe SMS \u00fcber dasselbe Abonnement und dieselbe Nummer, und dasselbe Anfrageformat deckt RCS, WhatsApp und die anderen Kan\u00e4le ab. Dieser Beitrag bildet eine SMS-API-Integration St\u00fcck f\u00fcr St\u00fcck auf die Conversation API ab, mit Anfragen, die ich f\u00fcr dasselbe Abonnement an beide APIs gesendet habe. Wenn Sie stattdessen ganz von vorn anfangen, <a href=\"https:\/\/sinch.com\/de\/blog\/send-sms-conversation-api-curl-nodejs-python\/\">SMS mit der Sinch Conversation API in curl, Node.js und Python versenden<\/a> ist der k\u00fcrzere Weg.<\/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-6922\"><p class=\"h5 m-0\" id=\"toc-title-6922\">Inhaltsverzeichnis<\/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=\"#sie-benoetigen-folgendes\">Sie ben\u00f6tigen Folgendes:<\/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=\"#abonnement-mit-einer-conversation-api-app-verknuepfen\">Abonnement mit einer Conversation API-App verkn\u00fcpfen<\/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=\"#eine-nachricht-senden\">Eine Nachricht senden<\/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=\"#feld-fuer-feld\">Feld f\u00fcr Feld<\/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=\"#an-viele-empfaenger-senden\">An viele Empf\u00e4nger senden<\/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=\"#zustellungsberichte\">Zustellungsberichte<\/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=\"#eingehende-nachrichten\">Eingehende Nachrichten<\/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=\"#workflows-einzeln-umstellen\">Workflows einzeln umstellen<\/a><a class=\"scrollme link-body-color\" href=\"#mit-ausgehenden-benachrichtigungen-beginnen\">Mit ausgehenden Benachrichtigungen beginnen<\/a><a class=\"scrollme link-body-color\" href=\"#sms-api-sendevorgaengen-waehrend-der-umstellung-eine-eigene-callback_url-zuweisen\">SMS-API-Sendevorg\u00e4ngen w\u00e4hrend der Umstellung eine eigene callback_url zuweisen<\/a><a class=\"scrollme link-body-color\" href=\"#werte-fuer-client_reference-in-message_metadata-beibehalten\">Werte f\u00fcr client_reference in message_metadata beibehalten<\/a><a class=\"scrollme link-body-color\" href=\"#mit-identified_by-an-telefonnummern-senden\">Mit identified_by an Telefonnummern senden<\/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=\"#fehlerbehebung\">Fehlerbehebung<\/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=\"#die-naechsten-schritte\">Die n\u00e4chsten Schritte<\/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=\"#zusaetzliche-ressourcen\">Zus\u00e4tzliche Ressourcen<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Sie ben\u00f6tigen Folgendes:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ihr bestehendes SMS-API-Abonnement und die dazugeh\u00f6rigen Nummern<\/li>\n\n\n\n<li>Zugang zur Conversation API im <a href=\"https:\/\/dashboard.sinch.com\">Sinch-Dashboard<\/a> (\u00d6ffnen Sie <strong>Conversation API<\/strong> im linken Men\u00fc und klicken Sie auf <strong>GET ACCESS<\/strong>, falls Sie das noch nicht getan haben)<\/li>\n\n\n\n<li><code>curl<\/code> und <code>jq<\/code> f\u00fcr die Shell-Beispiele oder Node.js 20 bzw. neuer mit <code>@sinch\/sdk-core<\/code> f\u00fcr die Node.js-Beispiele<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Abonnement mit einer Conversation API-App verkn\u00fcpfen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sie ben\u00f6tigen keine neue Nummer. Die Conversation API sendet SMS \u00fcber eine <strong>App<\/strong>, und der SMS-Kanal der App verweist auf ein SMS-Abonnement. Richten Sie diesen auf das Abonnement, das Sie bereits haben.<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-sand\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> <p class=\"mb-0\">Die Verkn\u00fcpfung \u00e4ndert das Ziel der Callbacks des Abonnements. Die Callback-URLs des Abonnements m\u00fcssen entfernt werden, bevor Sie es verkn\u00fcpfen k\u00f6nnen. Danach gehen eingehende Nachrichten an den Conversation API-Webhook der App, und Zustellungsberichte f\u00fcr Batches, die Sie noch \u00fcber die SMS-API senden, erreichen Sie nur, wenn der Batch eine eigene <code>callback_url<\/code> festlegt. Richten Sie zun\u00e4chst den Webhook der App ein und testen Sie ihn mit einem Test-Abonnement, bevor Sie ihn produktiv nutzen, sofern Sie eines haben.<\/p><\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Schritte:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gehen Sie zu <strong>Conversation API<\/strong>, dann zu <strong>Apps<\/strong>, und erstellen Sie eine App in derselben Region wie Ihr Abonnement. Die Conversation API ist in den USA, der EU und Brasilien verf\u00fcgbar. Wenn sich Ihr Abonnement in einer anderen SMS-API-Region wie Australien oder Kanada befindet, fragen Sie Ihren Sinch-Account-Manager, welche Conversation API-Region Sie verwenden sollten, bevor Sie beginnen.<\/li>\n\n\n\n<li>Klicken Sie in der App in der Zeile <strong>SMS<\/strong> auf <strong>SET UP CHANNEL<\/strong> und w\u00e4hlen Sie Ihr bestehendes Abonnement aus. Wenn f\u00fcr das Abonnement Callback-URLs festgelegt sind, wird es vom Dashboard erst verkn\u00fcpft, wenn Sie diese unter <strong>SMS<\/strong>, <strong>Service APIs<\/strong>, <strong>Callback URLs<\/strong> entfernen. Dies schlie\u00dft die \u00dcberschreibung der <strong>Incoming URL<\/strong> ein, nicht nur die <strong>Default URL<\/strong>. Richten Sie vorher den Webhook der App ein (siehe <a href=\"#delivery-reports\">Zustellungsberichte<\/a>), da das Abonnement ab diesem Zeitpunkt keine Callbacks mehr an Ihren alten Endpunkt sendet.<\/li>\n\n\n\n<li>Navigieren Sie zu <strong>Einstellungen<\/strong>, dann <strong>Zugriffsschl\u00fcssel<\/strong>, und erstellen Sie einen Zugriffsschl\u00fcssel. Kopieren Sie die Key-ID und das Secret. Das Secret wird nur einmal angezeigt.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Kopieren Sie die App-ID aus der App und die Projekt-ID unter <strong>Settings<\/strong>, <strong>Project Settings<\/strong>. Diese ersetzen die Abonnement-ID und das API-Token in Ihrem Code:<\/p>\n\n\n\n<figure tabindex=\"0\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>SMS-API<\/th><th>Conversation API<\/th><\/tr><\/thead><tbody><tr><td><code>https:\/\/{region}.sms.api.sinch.com<\/code><\/td><td><code>https:\/\/{region}.conversation.api.sinch.com<\/code><\/td><\/tr><tr><td>Abonnement-ID im Pfad<\/td><td>Projekt-ID im Pfad, App-ID im Body<\/td><\/tr><tr><td>API-Token als Bearer-Token<\/td><td>Access Key (Key-ID und Secret), der gegen ein OAuth 2.0-Token eingetauscht wird<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das Token stammt aus einer Anfrage und ist etwa eine Stunde lang g\u00fcltig:<\/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-12ce8d1b19e6d75718c3c007cc83e774_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-12ce8d1b19e6d75718c3c007cc83e774_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-12ce8d1b19e6d75718c3c007cc83e774_code_0\" role=\"tabpanel\" aria-labelledby=\"block-12ce8d1b19e6d75718c3c007cc83e774_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-12ce8d1b19e6d75718c3c007cc83e774_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-12ce8d1b19e6d75718c3c007cc83e774_code_0_content\" class=\"language-shell\">\r\n\r\n                                    export 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                                <\/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\">Die SDKs fordern das Token f\u00fcr Sie an und aktualisieren es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eine Nachricht senden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist ein typischer SMS-API-Aufruf: ein Empf\u00e4nger, ein Zustellungsbericht pro Empf\u00e4nger und eine Referenz, um den Bericht einer Bestellung zuzuordnen.<\/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-5bb5e8779a0e84d1d001043561aefa77_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-5bb5e8779a0e84d1d001043561aefa77_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-5bb5e8779a0e84d1d001043561aefa77_code_0\" role=\"tabpanel\" aria-labelledby=\"block-5bb5e8779a0e84d1d001043561aefa77_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-5bb5e8779a0e84d1d001043561aefa77_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-5bb5e8779a0e84d1d001043561aefa77_code_0_content\" class=\"language-shell\">\r\n\r\n                                    curl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/us.sms.api.sinch.com\/xms\/v1\/$SINCH_SERVICE_PLAN_ID\/batches&quot; \\\r\n  --header &quot;Authorization: Bearer $SINCH_API_TOKEN&quot; \\\r\n  --header &quot;Content-Type: application\/json&quot; \\\r\n  --data &#039;{\r\n    &quot;from&quot;: &quot;+12025550123&quot;,\r\n    &quot;to&quot;: [&quot;+15551234567&quot;],\r\n    &quot;body&quot;: &quot;Your order has shipped&quot;,\r\n    &quot;delivery_report&quot;: &quot;per_recipient&quot;,\r\n    &quot;client_reference&quot;: &quot;order-1042&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    <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-7fc32780d9fd8737fdbba08376c35ce3_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-7fc32780d9fd8737fdbba08376c35ce3_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-7fc32780d9fd8737fdbba08376c35ce3_code_0\" role=\"tabpanel\" aria-labelledby=\"block-7fc32780d9fd8737fdbba08376c35ce3_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-7fc32780d9fd8737fdbba08376c35ce3_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-7fc32780d9fd8737fdbba08376c35ce3_code_0_content\" class=\"language-shell\">\r\n\r\n                                    {&quot;body&quot;:&quot;Your order has shipped&quot;,&quot;canceled&quot;:false,&quot;client_reference&quot;:&quot;order-1042&quot;,&quot;created_at&quot;:&quot;2026-10-28T11:57:15.529Z&quot;,&quot;delivery_report&quot;:&quot;per_recipient&quot;,&quot;expire_at&quot;:&quot;2026-10-31T11:57:15.529Z&quot;,&quot;flash_message&quot;:false,&quot;from&quot;:&quot;46765106280&quot;,&quot;id&quot;:&quot;01M615Y8W9CRFH0SVQBS9KVK7F&quot;,&quot;modified_at&quot;:&quot;2026-10-28T11:57:15.529Z&quot;,&quot;to&quot;:[&quot;46706855785&quot;],&quot;type&quot;:&quot;mt_text&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\">Dieselbe Nachricht mit der Conversation API:<\/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-b0a3c53efdb6e71c1bc100302df42be7_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-b0a3c53efdb6e71c1bc100302df42be7_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-b0a3c53efdb6e71c1bc100302df42be7_code_0\" role=\"tabpanel\" aria-labelledby=\"block-b0a3c53efdb6e71c1bc100302df42be7_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-b0a3c53efdb6e71c1bc100302df42be7_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-b0a3c53efdb6e71c1bc100302df42be7_code_0_content\" class=\"language-shell\">\r\n\r\n                                    curl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/us.conversation.api.sinch.com\/v1\/projects\/$SINCH_PROJECT_ID\/messages:send&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;recipient&quot;: {\r\n      &quot;identified_by&quot;: {\r\n        &quot;channel_identities&quot;: [{ &quot;channel&quot;: &quot;SMS&quot;, &quot;identity&quot;: &quot;+15551234567&quot; }]\r\n      }\r\n    },\r\n    &quot;message&quot;: { &quot;text_message&quot;: { &quot;text&quot;: &quot;Your order has shipped&quot; } },\r\n    &quot;channel_properties&quot;: { &quot;SMS_SENDER&quot;: &quot;+12025550123&quot; },\r\n    &quot;message_metadata&quot;: &quot;order-1042&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    <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-b036892c0eada9eefee2073cc3b79f67_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-b036892c0eada9eefee2073cc3b79f67_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-b036892c0eada9eefee2073cc3b79f67_code_0\" role=\"tabpanel\" aria-labelledby=\"block-b036892c0eada9eefee2073cc3b79f67_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-b036892c0eada9eefee2073cc3b79f67_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-b036892c0eada9eefee2073cc3b79f67_code_0_content\" class=\"language-shell\">\r\n\r\n                                    {&quot;message_id&quot;:&quot;01M613S632MAAMWRVFEHPQ4YMA&quot;,&quot;accepted_time&quot;:&quot;2026-10-28T11:19:31.682Z&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\">Vier Dinge haben sich ge\u00e4ndert. <code>from<\/code> wurde zur Kanaleigenschaft <code>SMS_SENDER<\/code>. <code>to<\/code> wurde zu einem einzigen <code>recipient<\/code>, wobei der Kanal neben der Nummer angegeben ist. <code>client_reference<\/code> wurde zu <code>message_metadata<\/code>, das im Zustellungsbericht zur\u00fcckgegeben wird. <code>delivery_report<\/code> ist aus der Anfrage verschwunden: Zustellungsberichte stammen von einem Webhook in der App, was weiter unten behandelt wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Antwort hat sich ebenfalls ge\u00e4ndert. Die SMS-API gibt einen Batch mit einer <code>id<\/code> zur\u00fcck. Die Conversation API gibt eine <code>message_id<\/code> f\u00fcr die einzelne Nachricht zur\u00fcck, und auf diese ID beziehen sich die Zustellungsberichte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Node.js liegt die \u00c4nderung in den Client-Optionen und der Methode. Vorher, mit der SMS-API:<\/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-0cbffa2a105ec08f4326c3851cea2970_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-0cbffa2a105ec08f4326c3851cea2970_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-0cbffa2a105ec08f4326c3851cea2970_code_0\" role=\"tabpanel\" aria-labelledby=\"block-0cbffa2a105ec08f4326c3851cea2970_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-0cbffa2a105ec08f4326c3851cea2970_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-0cbffa2a105ec08f4326c3851cea2970_code_0_content\" class=\"language-Javascript\">\r\n\r\n                                    import { SinchClient } from &quot;@sinch\/sdk-core&quot;;\r\n\r\n\/\/ Before: the standalone SMS API, authenticated with a service plan ID and API token.\r\nconst sinchClient = new SinchClient({\r\n  servicePlanId: process.env.SINCH_SERVICE_PLAN_ID ?? &quot;&quot;,\r\n  apiToken: process.env.SINCH_API_TOKEN ?? &quot;&quot;,\r\n  smsRegion: &quot;us&quot;,\r\n});\r\n\r\nconst batch = await sinchClient.sms.batches.sendTextMessage({\r\n  sendSMSRequestBody: {\r\n    from: &quot;+12025550123&quot;,\r\n    to: [&quot;+15551234567&quot;],\r\n    body: &quot;Your order has shipped&quot;,\r\n    delivery_report: &quot;per_recipient&quot;,\r\n    client_reference: &quot;order-1042&quot;,\r\n  },\r\n});\r\n\r\nconsole.log(`Sent batch ${batch.id}`);\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\">Nachher, mit der Conversation API:<\/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-48e011ec5db7b954be19b7b630878d65_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-48e011ec5db7b954be19b7b630878d65_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-48e011ec5db7b954be19b7b630878d65_code_0\" role=\"tabpanel\" aria-labelledby=\"block-48e011ec5db7b954be19b7b630878d65_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-48e011ec5db7b954be19b7b630878d65_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-48e011ec5db7b954be19b7b630878d65_code_0_content\" class=\"language-Javascript\">\r\n\r\n                                    import { SinchClient } from &quot;@sinch\/sdk-core&quot;;\r\n\r\n\/\/ After: the Conversation API, authenticated with a project ID and access key.\r\nconst sinchClient = new SinchClient({\r\n  projectId: process.env.SINCH_PROJECT_ID ?? &quot;&quot;,\r\n  keyId: process.env.SINCH_KEY_ID ?? &quot;&quot;,\r\n  keySecret: process.env.SINCH_KEY_SECRET ?? &quot;&quot;,\r\n  conversationRegion: &quot;us&quot;,\r\n});\r\n\r\nconst response = await sinchClient.conversation.messages.sendTextMessage({\r\n  sendMessageRequestBody: {\r\n    app_id: process.env.SINCH_APP_ID ?? &quot;&quot;,\r\n    recipient: {\r\n      identified_by: {\r\n        channel_identities: [{ channel: &quot;SMS&quot;, identity: &quot;+15551234567&quot; }],\r\n      },\r\n    },\r\n    message: { text_message: { text: &quot;Your order has shipped&quot; } },\r\n    channel_properties: { SMS_SENDER: &quot;+12025550123&quot; },\r\n    message_metadata: &quot;order-1042&quot;,\r\n  },\r\n});\r\n\r\nconsole.log(`Sent message ${response.message_id}`);\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\">Beide verwenden <code>@sinch\/sdk-core<\/code>, sodass Sie sie in einer Codebasis nebeneinander ausf\u00fchren k\u00f6nnen, w\u00e4hrend Sie Workflows umstellen. Die Beispiele \u00fcberspringen die Eingabevalidierung, damit der Vergleich besser lesbar bleibt. Die <a href=\"https:\/\/sinch.com\/de\/blog\/send-sms-conversation-api-curl-nodejs-python\/\">Der Beitrag zum SMS-Versand<\/a> enth\u00e4lt die Vollversion mit Umgebungspr\u00fcfungen und Nummernvalidierung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Feld f\u00fcr Feld<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Felder, die die meisten SMS-API-Integrationen verwenden, und wo sie eingef\u00fcgt werden:<\/p>\n\n\n\n<figure tabindex=\"0\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>SMS-API-Feld<\/th><th>Conversation API<\/th><\/tr><\/thead><tbody><tr><td><code>from<\/code><\/td><td><code>channel_properties.SMS_SENDER<\/code> oder der Standard-Absender des Abonnements<\/td><\/tr><tr><td><code>to<\/code> (Array)<\/td><td><code>recipient<\/code> (einer pro Anfrage) oder die Batch-API f\u00fcr viele Empf\u00e4nger<\/td><\/tr><tr><td><code>body<\/code><\/td><td><code>message.text_message.text<\/code><\/td><\/tr><tr><td><code>client_reference<\/code><\/td><td><code>message_metadata<\/code>, zur\u00fcckgegeben in Zustellungsberichten. <code>correlation_id<\/code> erreicht auch eingehende Antworten<\/td><\/tr><tr><td><code>delivery_report<\/code><\/td><td>Ein <code>MESSAGE_DELIVERY<\/code>-Webhook in der App<\/td><\/tr><tr><td><code>callback_url<\/code><\/td><td><code>callback_url<\/code> in der Anfrage. Das Python-SDK nennt es <code>event_destination_target<\/code><\/td><\/tr><tr><td><code>parameters<\/code><\/td><td>Batch-API <code>recipient_and_params[].parameters<\/code><\/td><\/tr><tr><td><code>send_at<\/code><\/td><td>Batch-API <code>send_after<\/code>, bis zu sieben Tage im Voraus<\/td><\/tr><tr><td><code>flash_message<\/code><\/td><td><code>channel_properties.SMS_FLASH_MESSAGE: \"true\"<\/code><\/td><\/tr><tr><td><code>max_number_of_message_parts<\/code><\/td><td><code>channel_properties.SMS_MAX_NUMBER_OF_MESSAGE_PARTS<\/code><\/td><\/tr><tr><td>Batch-<code>id<\/code><\/td><td><code>message_id<\/code> pro Nachricht oder <code>batch_id<\/code> aus der Batch-API<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kanaleigenschaftswerte sind Strings. Daher akzeptiert <code>SMS_FLASH_MESSAGE<\/code> <code>\"true\"<\/code> und nicht <code>true<\/code>. Wenn Sie bin\u00e4re SMS mit <code>type: mt_binary<\/code> und einem UDH senden, pr\u00fcfen Sie die <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/channel-support\/sms\/properties\">Eigenschaften des SMS-Kanals<\/a> f\u00fcr Ihren Anwendungsfall, bevor Sie diesen Workflow umstellen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An viele Empf\u00e4nger senden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die SMS-API akzeptiert bis zu 1.000 Nummern in <code>to<\/code> und f\u00fcllt die <code>parameters<\/code> pro Empf\u00e4nger aus. Bei der Conversation API akzeptiert <code>messages:send<\/code> einen einzigen Empf\u00e4nger. Durchlaufen Sie f\u00fcr eine Handvoll Nachrichten Ihre Empf\u00e4nger und senden Sie jeweils eine Anfrage. Verwenden Sie f\u00fcr eine echte Liste die <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/api-reference\/batch-api\">Conversation Batch API<\/a>: Eine Nachricht, bis zu 1.000 Empf\u00e4nger, jeder mit seinen eigenen Parametern.<\/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-f5de45f8f9c2ab545745dd38d2d5e6ea_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-f5de45f8f9c2ab545745dd38d2d5e6ea_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-f5de45f8f9c2ab545745dd38d2d5e6ea_code_0\" role=\"tabpanel\" aria-labelledby=\"block-f5de45f8f9c2ab545745dd38d2d5e6ea_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-f5de45f8f9c2ab545745dd38d2d5e6ea_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-f5de45f8f9c2ab545745dd38d2d5e6ea_code_0_content\" class=\"language-shell\">\r\n\r\n                                    #!\/usr\/bin\/env bash\r\n# Send one templated SMS to several recipients with the Conversation Batch API.\r\n# Requires SINCH_ACCESS_TOKEN from https:\/\/auth.sinch.com\/oauth2\/token.\r\nset -euo pipefail\r\n\r\n: &quot;${SINCH_ACCESS_TOKEN:?Set SINCH_ACCESS_TOKEN}&quot;\r\n: &quot;${SINCH_PROJECT_ID:?Set SINCH_PROJECT_ID}&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\nbody=$(jq -n \\\r\n  --arg app_id &quot;$SINCH_APP_ID&quot; \\\r\n  --arg sender &quot;$SINCH_SMS_SENDER&quot; \\\r\n  &#039;{\r\n    app_id: $app_id,\r\n    message: { text_message: { text: &quot;Hi ${name}, your order has shipped&quot; } },\r\n    channel_properties: { SMS_SENDER: $sender },\r\n    recipient_and_params: [\r\n      {\r\n        recipient: { identified_by: { channel_identities: [{ channel: &quot;SMS&quot;, identity: &quot;+15551234567&quot; }] } },\r\n        parameters: { name: &quot;Ana&quot; }\r\n      },\r\n      {\r\n        recipient: { identified_by: { channel_identities: [{ channel: &quot;SMS&quot;, identity: &quot;+15557654321&quot; }] } },\r\n        parameters: { name: &quot;Sam&quot; }\r\n      }\r\n    ]\r\n  }&#039;)\r\n\r\ncurl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/$region.conversationbatch.api.sinch.com\/v1\/projects\/$SINCH_PROJECT_ID\/messages&quot; \\\r\n  --header &quot;Authorization: Bearer $SINCH_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    <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-254493f946c39a6a084bfb63cc68c0dd_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-254493f946c39a6a084bfb63cc68c0dd_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-254493f946c39a6a084bfb63cc68c0dd_code_0\" role=\"tabpanel\" aria-labelledby=\"block-254493f946c39a6a084bfb63cc68c0dd_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-254493f946c39a6a084bfb63cc68c0dd_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-254493f946c39a6a084bfb63cc68c0dd_code_0_content\" class=\"language-shell\">\r\n\r\n                                    {&quot;batch_id&quot;:&quot;01M613S8XFQAP5EAX93J9QHX1W&quot;,&quot;send_after&quot;:&quot;2026-10-28T11:19:34Z&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\">Die Platzhalter-Syntax lautet <code>${name}<\/code>, genau wie bei den SMS-API-Parametern. Die Batch-API hat einen eigenen Host, <code>conversationbatch.api.sinch.com<\/code>. F\u00fcgen Sie <code>send_after<\/code> mit einer UTC-Zeit bis zu sieben Tage im Voraus hinzu, um den Batch zu planen. Die Nachricht jedes Empf\u00e4ngers erh\u00e4lt eine eigene <code>message_id<\/code> und einen eigenen Zustellungsbericht, wobei die Batch-ID in den <code>metadata<\/code> des Berichts enthalten ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verwenden Sie den Pfad <code>\/v1\/<\/code>. Die Batch-API-Endpunkte <code>v1alpha<\/code> und <code>v1beta<\/code> <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/release-notes\">werden am 16. Dezember 2026 eingestellt<\/a>, sodass Code, der f\u00fcr sie geschrieben wurde, ebenfalls auf <code>\/v1\/<\/code> umgestellt werden muss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zustellungsberichte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In der SMS-API legen Sie <code>delivery_report<\/code> f\u00fcr jeden Batch fest und erhalten Berichte an der Callback-URL des Abonnements. Bei der Conversation API gehen Berichte an die Webhooks in der App, und Sie w\u00e4hlen diese per Trigger aus. F\u00fcgen Sie einen mit <code>MESSAGE_DELIVERY<\/code> f\u00fcr Berichte und <code>MESSAGE_INBOUND<\/code> f\u00fcr Antworten hinzu:<\/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-89bfd75c89dfd0ce1282ed5450ea9b77_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-89bfd75c89dfd0ce1282ed5450ea9b77_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-89bfd75c89dfd0ce1282ed5450ea9b77_code_0\" role=\"tabpanel\" aria-labelledby=\"block-89bfd75c89dfd0ce1282ed5450ea9b77_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-89bfd75c89dfd0ce1282ed5450ea9b77_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-89bfd75c89dfd0ce1282ed5450ea9b77_code_0_content\" class=\"language-shell\">\r\n\r\n                                    curl --silent --show-error --fail-with-body \\\r\n  &quot;https:\/\/us.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\">Ein Zustellungsbericht sieht wie folgt aus:<\/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-b4267c37eeb5b23dfcac9d988fd2bbfb_code_0\" type=\"button\" role=\"tab\" aria-controls=\"block-b4267c37eeb5b23dfcac9d988fd2bbfb_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-b4267c37eeb5b23dfcac9d988fd2bbfb_code_0\" role=\"tabpanel\" aria-labelledby=\"block-b4267c37eeb5b23dfcac9d988fd2bbfb_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-b4267c37eeb5b23dfcac9d988fd2bbfb_code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\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-b4267c37eeb5b23dfcac9d988fd2bbfb_code_0_content\" class=\"language-Javascript\">\r\n\r\n                                    {\r\n  &quot;app_id&quot;: &quot;YOUR_APP_ID&quot;,\r\n  &quot;project_id&quot;: &quot;YOUR_PROJECT_ID&quot;,\r\n  &quot;message_delivery_report&quot;: {\r\n    &quot;message_id&quot;: &quot;01M613S632MAAMWRVFEHPQ4YMA&quot;,\r\n    &quot;conversation_id&quot;: &quot;&quot;,\r\n    &quot;status&quot;: &quot;DELIVERED&quot;,\r\n    &quot;channel_identity&quot;: {\r\n      &quot;channel&quot;: &quot;SMS&quot;,\r\n      &quot;identity&quot;: &quot;46706855785&quot;,\r\n      &quot;app_id&quot;: &quot;&quot;,\r\n      &quot;nrs_data&quot;: { &quot;mcc&quot;: &quot;240&quot;, &quot;mnc&quot;: &quot;07&quot;, &quot;country&quot;: &quot;SE&quot; }\r\n    },\r\n    &quot;contact_id&quot;: &quot;&quot;,\r\n    &quot;metadata&quot;: &quot;order-1042&quot;,\r\n    &quot;processing_mode&quot;: &quot;DISPATCH&quot;\r\n  }\r\n}\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\">Die Statusliste ist k\u00fcrzer als die der SMS-API. Eine SMS wechselt von <code>QUEUED_ON_CHANNEL<\/code> zu <code>DELIVERED<\/code> oder <code>FAILED<\/code>. Ein <code>FAILED<\/code>-Bericht enth\u00e4lt eine <code>reason<\/code> mit einem Code und einer Beschreibung zur Angabe des Grundes. Ihre Suche nach <code>client_reference<\/code> wird zu einer Suche nach <code>metadata<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Telefonnummer in <code>channel_identity.identity<\/code> wird ohne f\u00fchrendes <code>+<\/code> zur\u00fcckgegeben, selbst wenn Sie an <code>+46706855785<\/code> gesendet haben. Die SMS-API macht das Gleiche in ihren Berichten. Code, der bereits mit <code>recipient<\/code> abgleicht, funktioniert also weiterhin, sobald er aus dem neuen Feld liest. <code>contact_id<\/code> und <code>conversation_id<\/code> sind leer, da die App im Dispatch-Modus l\u00e4uft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sinch wiederholt einen Webhook, der keine <code>2xx<\/code> zur\u00fcckgibt. Halten Sie den Handler also idempotent: Verwenden Sie <code>message_id<\/code> und <code>status<\/code>, um bereits verarbeitete Berichte zu \u00fcberspringen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eingehende Nachrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antworten auf Ihre Nummer kommen am Webhook der App mit dem Trigger <code>MESSAGE_INBOUND<\/code> an. Der Text befindet sich unter <code>message.contact_message.text_message.text<\/code> und die Nummer des Absenders unter <code>message.channel_identity.identity<\/code>. Wenn Ihr SMS-API-Code <code>body<\/code> und <code>from<\/code> aus einem eingehenden Callback liest, sind dies die beiden Pfade, die ge\u00e4ndert werden m\u00fcssen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald das Abonnement verkn\u00fcpft ist, verweist seine Standard-Callback-URL auf die Conversation API, und Antworten auf seine Nummern gehen an den Conversation-API-Webhook der App. Sie erscheinen weiterhin in der Inbound-Liste der SMS-API (<code>GET \/xms\/v1\/{service_plan_id}\/inbounds<\/code>). Code, der diese Liste liest, funktioniert also w\u00e4hrend der Umstellung weiter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Workflows einzeln umstellen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Einige Entscheidungen machen die Umstellung weniger riskant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mit ausgehenden Benachrichtigungen beginnen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Einseitige Benachrichtigungen wie Versandaktualisierungen und Erinnerungen erfordern die wenigsten \u00c4nderungen: einen Sendevorgang und einen Zustellungsbericht. Stellen Sie diese zuerst um und belassen Sie bidirektionale Workflows auf der SMS-API, bis der Webhook eingerichtet und getestet ist. W\u00e4hrend der Umstellung arbeiten beide APIs mit demselben Abonnement.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SMS-API-Sendevorg\u00e4ngen w\u00e4hrend der Umstellung eine eigene <code>callback_url<\/code> zuweisen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald das Abonnement verkn\u00fcpft ist, geh\u00f6rt seine Standard-Callback-URL zur Conversation API. Zustellungsberichte f\u00fcr Nachrichten, die Sie noch \u00fcber die SMS-API senden, erreichen den Webhook Ihrer App nicht, und das Abonnement hat keine andere Callback-URL, an die sie gesendet werden k\u00f6nnten. Legen Sie <code>callback_url<\/code> f\u00fcr jeden SMS-API-Batch fest, der noch Berichte ben\u00f6tigt. Diese kommen dann weiterhin im SMS-API-Format an Ihrem Endpunkt an. Sie k\u00f6nnen sie auch mit <code>GET \/xms\/v1\/{service_plan_id}\/batches\/{batch_id}\/delivery_report<\/code> abrufen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Werte f\u00fcr <code>client_reference<\/code> in <code>message_metadata<\/code> beibehalten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Ihr Reporting, Ihre Datenbank oder ein Support-Tool auf <code>client_reference<\/code> basiert, f\u00fcgen Sie denselben Wert in <code>message_metadata<\/code> ein. Berichte von beiden APIs werden w\u00e4hrend der Umstellung dann denselben Datens\u00e4tzen zugeordnet, und nachgelagerte Systeme m\u00fcssen nicht wissen, welche API die Nachricht gesendet hat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mit <code>identified_by<\/code> an Telefonnummern senden<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Neue Apps der Conversation API laufen im <strong>Dispatch<\/strong>-Modus, in dem keine Kontakte gespeichert werden. Das entspricht der Funktionsweise der SMS-API: Sie senden an eine Nummer und erhalten einen Bericht f\u00fcr diese Nummer. <code>identified_by<\/code> mit der Telefonnummer funktioniert in beiden Modi, sodass Sie Ihr Datenmodell f\u00fcr die Umstellung nicht \u00e4ndern m\u00fcssen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fehlerbehebung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>404<\/code> von der Conversation API.<\/strong> Die Region in der URL stimmt nicht mit der Region der App \u00fcberein. Die App ist nur in der Region erreichbar, in der Sie sie erstellt haben.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Der SMS-Kanal meldet Fehler.<\/strong> Die App und das Abonnement m\u00fcssen sich in derselben Region befinden. Wenn sie sich unterscheiden, erstellen Sie die App in der Region des Abonnements erneut und richten Sie den SMS-Kanal dort ein.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Es kommen keine Callbacks mehr an Ihrem alten Endpunkt an.<\/strong> Durch die Verkn\u00fcpfung wurden die Callback-URLs des Abonnements entfernt. \u00dcberpr\u00fcfen Sie bei eingehenden Nachrichten und Sendevorg\u00e4ngen \u00fcber die Conversation API, ob die App \u00fcber einen Webhook mit den Triggern <code>MESSAGE_DELIVERY<\/code> und <code>MESSAGE_INBOUND<\/code> verf\u00fcgt und dieser eine <code>2xx<\/code> zur\u00fcckgibt. Legen Sie f\u00fcr Batches, die Sie weiterhin \u00fcber die SMS-API senden, <code>callback_url<\/code> f\u00fcr den Batch fest, wie beschrieben in <a href=\"#move-one-flow-at-a-time\">Workflows einzeln umstellen<\/a>. Um zu sehen, worauf das Abonnement verweist, \u00f6ffnen Sie <strong>SMS<\/strong>, <strong>Service APIs<\/strong>, w\u00e4hlen Sie das Abonnement aus und suchen Sie unter <strong>Callback URLs<\/strong>.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sendevorg\u00e4nge mit <code>contact_id<\/code> schlagen fehl.<\/strong> Die App befindet sich im Dispatch-Modus, in dem keine Kontakte gespeichert werden. Senden Sie stattdessen mit <code>identified_by<\/code> und der Telefonnummer.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>400<\/code> von der Batch-API bez\u00fcglich Parametern.<\/strong> Ein Platzhalter in der Nachricht hat f\u00fcr einen der Empf\u00e4nger keinen Wert. Jeder <code>${name}<\/code> im Text ben\u00f6tigt einen passenden Schl\u00fcssel in den <code>parameters<\/code> des jeweiligen Empf\u00e4ngers.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Die n\u00e4chsten Schritte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald die App bereitsteht, k\u00f6nnen Sie derselben App RCS oder WhatsApp hinzuf\u00fcgen, dem Empf\u00e4nger in <code>channel_identities<\/code> eine Identit\u00e4t f\u00fcr jeden Kanal zuweisen, die Kan\u00e4le in <code>channel_priority_order<\/code> auflisten und f\u00fcr Empf\u00e4nger, die \u00fcber diese Kan\u00e4le nicht verf\u00fcgen, auf SMS zur\u00fcckgreifen. Die <a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/keyconcepts\">Seite zu Schl\u00fcsselkonzepten<\/a> erkl\u00e4rt, wie der Fallback funktioniert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zus\u00e4tzliche Ressourcen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/getting-started\">Erste Schritte mit der Conversation API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/channel-support\/sms\/set-up\">SMS-Kanal einrichten<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/channel-support\/sms\/properties\">Eigenschaften des SMS-Kanals<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/api-reference\/batch-api\">Conversation Batch API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/callbacks\">Conversation API-Callbacks<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.sinch.com\/docs\/conversation\/processing-modes\">Verarbeitungsmodi<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sinch.com\/de\/blog\/send-sms-conversation-api-curl-nodejs-python\/\">SMS mit der Sinch Conversation API in curl, Node.js und Python versenden<\/a><\/li>\n<\/ul>\n","protected":false},"author":93,"featured_media":214372,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[],"blog_category":[752],"class_list":["post-214405","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-entwickler"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migration von der Sinch-SMS-API (XMS) zur Conversation API<\/title>\n<meta name=\"description\" content=\"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.\" \/>\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\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migration von der Sinch-SMS-API (XMS) zur Conversation API\" \/>\n<meta property=\"og:description\" content=\"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/\" \/>\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-Migrate-from-sms-xms-api-to-conversation-api-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=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/\"},\"author\":{\"name\":\"Gunnar Grosch\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#\\\/schema\\\/person\\\/b2bde1c2728a21bc953ea0e129936c08\"},\"headline\":\"Von der Sinch SMS-API zur Conversation API migrieren\",\"datePublished\":\"2026-10-29T16:18:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/\"},\"wordCount\":1737,\"publisher\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png\",\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/\",\"url\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/\",\"name\":\"Migration von der Sinch-SMS-API (XMS) zur Conversation API\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png\",\"datePublished\":\"2026-10-29T16:18:18+00:00\",\"description\":\"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png\",\"contentUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png\",\"width\":1296,\"height\":788,\"caption\":\"A split-flap departure board routing from the SMS API batches endpoint to the Conversation API messages:send endpoint\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/migration-von-sms-xms-api-zu-conversation-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sinch.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/sinch.com\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Von der Sinch SMS-API zur Conversation API migrieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/sinch.com\\\/de\\\/\",\"name\":\"Sinch\",\"description\":\"SMS Messaging, Voice, E-Mail, Video & Verifizierungs-APIs | Sinch\",\"publisher\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sinch.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#organization\",\"name\":\"Sinch\",\"url\":\"https:\\\/\\\/sinch.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\\\/\\\/sinch.com\\\/de\\\/#\\\/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\\\/de\\\/#\\\/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\\\/de\\\/#\\\/schema\\\/person\\\/b2bde1c2728a21bc953ea0e129936c08\",\"name\":\"Gunnar Grosch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@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":"Migration von der Sinch-SMS-API (XMS) zur Conversation API","description":"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.","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\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/","og_locale":"de_DE","og_type":"article","og_title":"Migration von der Sinch-SMS-API (XMS) zur Conversation API","og_description":"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.","og_url":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/","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-Migrate-from-sms-xms-api-to-conversation-api-Header.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@WeAreSinch","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"8 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#article","isPartOf":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/"},"author":{"name":"Gunnar Grosch","@id":"https:\/\/sinch.com\/de\/#\/schema\/person\/b2bde1c2728a21bc953ea0e129936c08"},"headline":"Von der Sinch SMS-API zur Conversation API migrieren","datePublished":"2026-10-29T16:18:18+00:00","mainEntityOfPage":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/"},"wordCount":1737,"publisher":{"@id":"https:\/\/sinch.com\/de\/#organization"},"image":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#primaryimage"},"thumbnailUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png","inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/","url":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/","name":"Migration von der Sinch-SMS-API (XMS) zur Conversation API","isPartOf":{"@id":"https:\/\/sinch.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#primaryimage"},"image":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#primaryimage"},"thumbnailUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png","datePublished":"2026-10-29T16:18:18+00:00","description":"Bilden Sie Batches, Zustellungsberichte und eingehende Nachrichten der Sinch-SMS-API (XMS) in der Conversation API ab, mit Vorher-Nachher-Anfragen in curl und Node.js.","breadcrumb":{"@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/"]}]},{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#primaryimage","url":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png","contentUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2026\/10\/SI-Blog-Developers-Migrate-from-sms-xms-api-to-conversation-api-Header.png","width":1296,"height":788,"caption":"A split-flap departure board routing from the SMS API batches endpoint to the Conversation API messages:send endpoint"},{"@type":"BreadcrumbList","@id":"https:\/\/sinch.com\/de\/blog\/migration-von-sms-xms-api-zu-conversation-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sinch.com\/de\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/sinch.com\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"Von der Sinch SMS-API zur Conversation API migrieren"}]},{"@type":"WebSite","@id":"https:\/\/sinch.com\/de\/#website","url":"https:\/\/sinch.com\/de\/","name":"Sinch","description":"SMS Messaging, Voice, E-Mail, Video & Verifizierungs-APIs | Sinch","publisher":{"@id":"https:\/\/sinch.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sinch.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de-DE"},{"@type":"Organization","@id":"https:\/\/sinch.com\/de\/#organization","name":"Sinch","url":"https:\/\/sinch.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/sinch.com\/de\/#\/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\/de\/#\/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\/de\/#\/schema\/person\/b2bde1c2728a21bc953ea0e129936c08","name":"Gunnar Grosch","image":{"@type":"ImageObject","inLanguage":"de-DE","@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\/de\/wp-json\/wp\/v2\/blog\/214405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/users\/93"}],"version-history":[{"count":0,"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/blog\/214405\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/media\/214372"}],"wp:attachment":[{"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/media?parent=214405"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/tags?post=214405"},{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/sinch.com\/de\/wp-json\/wp\/v2\/blog_category?post=214405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}