Cualifique una marca antes de registrar su campaña
Una campaña 10DLC describe los mensajes que una empresa registrada pretende enviar, cómo consienten los destinatarios y cómo pueden obtener ayuda o dejar de recibir mensajes. Esta API crea el registro en el registro; completar la activación del operador en producción es un paso independiente de configuración de la cuenta. Utilice una marca propia de registro de marca, después cargue sus casos de uso disponibles y, para el caso de uso seleccionado, los requisitos actuales.
Utilice el resultado de cualificación actual para elegir los subcasos de uso, los ID de red elegibles, las muestras de mensajes y las declaraciones de opt-in/opt-out/help. Los requisitos pueden variar según la marca y la red. No envíe los identificadores del ejemplo ni copie su descripción del consentimiento para un negocio con un proceso diferente.
Mantenga separados el sandbox y la producción
Para un ejercicio en el entorno de pruebas, utilice su propia marca simulada y un caso de uso actual para el que esté cualificada. Utilice TRIAL solo cuando lo ofrezca dicha cualificación. El portal comprueba que la marca seleccionada y el entorno de campaña coincidan. Una solicitud API directa no ejecuta por usted la validación completa del asistente del portal, por lo que mantenga esa separación en su integración.
La creación de campañas en producción es facturable y no deja automáticamente un número listo para enviar. Mantenga el entorno de la campaña coherente con su marca y revise la tarifa y las condiciones aplicables antes de crear una campaña real.
Envíe el JSON de la campaña
Prepare campaign.json con sus valores cualificados. R000000 significa sin revendedor; úselo solo cuando sea la configuración prevista. Para la configuración normal de revendedor MultiTEL, obtenga el identificador de revendedor MultiTEL LLC permitido desde la colección de revendedores de su cuenta o el flujo de preparación del portal en lugar de codificar de forma fija el identificador de otra persona.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'El siguiente JSON ilustra una campaña de prueba para una marca simulada propia. Sustituya la marca, el caso de uso, el revendedor y el texto de consentimiento por los valores que realmente estén cualificados para su prueba.
{
"brandId": "B123ABC",
"channelId": "10DLC",
"usecase": "TRIAL",
"subUsecases": [],
"resellerId": "R000000",
"description": "Trial account notices requested by users of the example application.",
"messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
"sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
"subscriberOptin": true,
"optinKeywords": "START",
"optinMessage": "You are subscribed to the example application's requested account notices.",
"subscriberOptout": true,
"optoutKeywords": "STOP",
"optoutMessage": "You will no longer receive the example application's account notices.",
"subscriberHelp": true,
"helpKeywords": "HELP",
"helpMessage": "For help with example account notices, contact support@example.invalid.",
"embeddedLink": false,
"embeddedPhone": false,
"numberPool": false,
"ageGated": false,
"directLending": false,
"termsAndConditions": true,
"autoRenewal": false,
"mnoIds": [],
"referenceId": "your-trial-reference"
}Establezca termsAndConditions en true solo después de que la persona autorizada haya revisado y aceptado las condiciones aplicables. El ejemplo no constituye consentimiento en su nombre. Utilice booleanos JSON para los indicadores, no cadenas entre comillas.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign.json \
'https://api.multitel.net/tcr/v2/campaignBuilder'Campos de la campaña y requisitos condicionales
| Campos | Qué debe proporcionar |
|---|---|
| brandId, channelId, usecase | Su marca propia, el canal 10DLC y un código de caso de uso actual elegible. Utilice los códigos de la cualificación, no etiquetas traducidas. |
| subUsecases | Una matriz de códigos de subcasos de uso elegibles. Respete el recuento mínimo y máximo de la cualificación seleccionada. |
| resellerId | Un identificador de revendedor permitido. La ruta propia de la cuenta acepta revendedores propios, su revendedor compartido configurado o el valor intencional sin revendedor. Un revendedor no relacionado es rechazado. |
| description, messageFlow | Describa la finalidad real y cómo se recoge el consentimiento. Cada uno debe contener 40–4096 caracteres. Incluya la acción, el formulario o el proceso real del usuario; no invente un consentimiento que su aplicación no recoja. |
| sample1 … sample5 | Mensajes representativos, normalmente 20–1024 caracteres cada uno. El portal requiere al menos uno; las redes elegibles pueden requerir más. Proporcione el número requerido por la cualificación actual. |
| subscriberOptin, subscriberOptout, subscriberHelp | Declare los flujos de destinatarios admitidos utilizando estos nombres de campo exactos. Cuando un flujo está habilitado, proporcione sus campos de palabra clave y mensaje. Los requisitos de la red pueden hacer obligatorios determinados flujos. |
| optinKeywords, optoutKeywords, helpKeywords | Las palabras clave realmente reconocidas, hasta 255 caracteres. Deben coincidir con el comportamiento de la aplicación receptora. |
| optinMessage, optoutMessage, helpMessage | Los mensajes correspondientes. Las reglas de campo publicadas actuales especifican 20–1024 caracteres. Incluya el comportamiento real de asistencia y de baja. |
| embeddedLink, embeddedPhone, embeddedLinkSample | Declare con veracidad los enlaces o números de teléfono integrados. Una red por lo demás cualificada puede no permitirlos. Una muestra de enlace permite hasta 255 caracteres. |
| mnoIds | Una matriz opcional de ID de red numéricos elegibles procedentes de la cualificación. No suponga que todas las redes admiten el caso de uso seleccionado. |
| numberPool, ageGated, directLending | Características de campaña aplicables como booleanos JSON. Elíjalas según el servicio real. |
| privacyPolicyLink, termsAndConditionsLink | Sus URL públicas pertinentes de política y condiciones, cuando proceda, de hasta 2048 caracteres cada una. Deben describir el servicio de mensajería real. |
| termsAndConditions | Aceptación explícita de las condiciones de campaña aplicables. El portal requiere true y su asistente también recoge las confirmaciones individuales actuales. |
| autoRenewal | Si la campaña se renueva. El valor predeterminado es true. Desactivar la renovación no elimina un compromiso mínimo ya asociado a una campaña en producción. |
| referenceId, tag | Su referencia de campaña, de hasta 50 caracteres, y etiquetas opcionales. referenceId no es la cabecera Idempotency-Key. |
El esquema publicado contiene algunas mayúsculas incoherentes en las tablas descriptivas. La solicitud actual del portal utiliza subscriberOptin y subscriberOptout como se muestra arriba. Mantenga exactamente esas mayúsculas. Esta guía cubre el flujo 10DLC orientado al inquilino; no suponga que los campos requeridos o los pasos de activación de otro canal son los mismos.
Reintente la misma solicitud prevista de forma segura
Utilice un Idempotency-Key único para esta creación prevista. La clave tiene 1–128 caracteres ASCII imprimibles sin espacios y está limitada a la cuenta propietaria. Mantenga sin cambios el método HTTP, la ruta, la cadena de consulta y los bytes exactos del cuerpo al reintentar. Un archivo JSON con formato modificado genera un conflicto aunque sus valores sean equivalentes.
Un duplicado en curso puede devolver HTTP 409 con Retry-After; las solicitudes completadas pueden repetir su respuesta almacenada. Un error almacenado en caché no prueba que el registro no haya creado nada. Guarde campaignId, requestId y cualquier cabecera de correlación, inspeccione la campaña existente y concilie un fallo parcial antes de considerar una nueva clave.
Un ID de campaña no es la configuración de envío final
La respuesta utiliza el estado HTTP y JSON directo. Si la creación se realiza correctamente, conserve campaignId y lea su estado actual:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"El flujo de producción actual del portal también comparte la campaña con el operador de mensajería y carga la marca/campaña en la cuenta de envío. Son operaciones independientes de esta llamada pública de creación. Una campaña del registro puede existir aunque falle un paso posterior de uso compartido o de carga del operador.
Utilice el flujo integrado de creación en producción del portal cuando necesite la secuencia combinada de registro, uso compartido y carga del operador. Para una campaña en producción ya creada directamente por esta API, conserve su ID de campaña y haga conciliar la configuración del operador de la cuenta a través del soporte. La interfaz de cliente actual no expone un botón general de reanudación para cada campaña en producción creada directamente. No cree otro registro para reintentar su activación. Confirme que la campaña está activa y que la configuración del operador se ha completado antes de asignar un número de envío. El número también debe ser propio, estar activo y estar habilitado para SMS. La creación de campañas no envía mensajes.
Tarifas de campañas en producción
| Caso de uso | Tarifa mensual |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| Otros casos de uso alternativos configurados | $11.12 |
Estos importes minoristas se comprobaron con la configuración actual del portal el 24 de octubre de 2026. Confirme el caso de uso cualificado actual y el precio mostrado antes de un envío en producción. Un monthlyFee en una respuesta de cualificación del registro no es automáticamente su precio minorista de MultiTEL.
El portal actual indica un compromiso mínimo de tres meses para las campañas en producción no políticas. Revise las condiciones aplicables y la opción de renovación antes de confirmar. El registro, el alquiler de números, la verificación adicional y el uso de mensajes son cargos independientes. Una respuesta de creación correcta no prueba por sí sola que todos los pasos de facturación o activación del operador se hayan completado.
Gestionar errores de validación y parciales
Lea el status HTTP y el JSON devuelto. Los fallos de validación pueden ser matrices de objetos code/description; los fallos locales pueden ser en cambio objetos con message, status y, para algunos errores de procesamiento, requestId.
| Resultado HTTP | Acción siguiente |
|---|---|
| 400 | Corrija los campos específicos o la clave de idempotencia. Vuelva a leer la cualificación actual, el recuento de muestras requerido y los requisitos de flujo de destinatarios. |
| 401, 403 o 404 | Compruebe las credenciales API y la IP de origen permitida, y después la propiedad y los permisos de marca/revendedor. No utilice identificadores de otra cuenta. |
| 402 | Revise la financiación de producción y el permiso de compra antes de reintentar la misma creación prevista. |
| 409 | Distinga la repetición en curso de una solicitud modificada que utiliza la misma clave. Conserve la campaña existente y los detalles de la solicitud al conciliar. |
| 429 o limitador no disponible | Respete Retry-After cuando esté presente y conserve la clave original y la solicitud exacta. |
| 500 o 502 | Es posible que la creación ya se haya producido. Guarde cualquier campaignId y requestId, compruebe la campaña existente y reanude o concilie su activación en lugar de crear un duplicado. |