Utvecklare

POST/tcr/v2/campaignBuilder

Registrera en 10DLC-kampanj

Skicka in en kvalificerad kampanj och skilj registerregistrering från operatörsaktivering och sändningsberedskap.

På denna sida
  1. Kvalificera ett varumärke innan du registrerar dess kampanj
  2. Håll sandlåda och produktion åtskilda
  3. Skicka in kampanj-JSON:en
  4. Kampanjfält och villkorliga krav
  5. Försök samma avsedda begäran igen på ett säkert sätt
  6. Ett kampanj-ID är inte den slutliga sändningskonfigurationen
  7. Avgifter för kampanjer i produktion
  8. Hantera validering och partiella fel

Kvalificera ett varumärke innan du registrerar dess kampanj

En 10DLC-kampanj beskriver meddelandena som ett registrerat företag avser att skicka, hur mottagarna samtycker och hur de kan få hjälp eller stoppa meddelanden. Detta API skapar registerposten; att slutföra operatörsaktivering i produktion är ett separat kontokonfigurationssteg. Använd ett ägt varumärke från varumärkesregistrering, läs sedan in tillgängliga användningsfall och det valda användningsfallets aktuella krav.

Använd det aktuella kvalificeringsresultatet för att välja underanvändningsfall, behöriga nätverks-ID:n, meddelandeexempel och opt-in-/opt-out-/help-deklarationer. Kraven kan skilja sig åt mellan varumärken och nätverk. Skicka inte in exemplets identifierare och kopiera inte dess samtyckesbeskrivning för ett företag med en annan process.

Håll sandlåda och produktion åtskilda

För en sandlådeövning använder du ditt eget testvarumärke och ett aktuellt användningsfall som det kvalificerar sig för. Använd TRIAL endast när kvalificeringen erbjuder det. Portalen kontrollerar att valt varumärke och kampanjmiljö överensstämmer. En direkt API-begäran kör inte portalens fullständiga guidevalidering åt dig, så bevara den separationen i din integration.

Skapande av kampanj i produktion är debiterbart och gör inte automatiskt ett nummer klart för sändning. Håll kampanjmiljön konsekvent med dess varumärke och granska avgiften och tillämpliga villkor innan du skapar en kampanj i produktion.

Skicka in kampanj-JSON:en

Förbered campaign.json med dina kvalificerade värden. R000000 betyder ingen återförsäljare; använd det endast när det är den avsedda konfigurationen. För den normala MultiTEL-återförsäljarkonfigurationen hämtar du den tillåtna MultiTEL LLC-återförsäljaridentifieraren från ditt kontos återförsäljarsamling eller portalens förberedelseflöde i stället för att hårdkoda någon annans identifierare.

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'

Följande JSON illustrerar en testkampanj för ett ägt testvarumärke. Ersätt varumärket, användningsfallet, återförsäljaren och samtyckestexten med de värden som faktiskt kvalificerar sig för ditt test.

{
  "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"
}

Ställ in termsAndConditions på true först efter att den behöriga personen har granskat och accepterat tillämpliga villkor. Exemplet är inte samtycke för din räkning. Använd JSON-booleska värden för flaggorna, inte citerade strängar.

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'

Kampanjfält och villkorliga krav

10DLC-kampanjbegäran
FältVad du ska ange
brandId, channelId, usecaseDitt ägda varumärke, kanal 10DLC och en behörig aktuell användningsfallskod. Använd koder från kvalificeringen, inte översatta etiketter.
subUsecasesEn matris med behöriga underanvändningsfallskoder. Respektera den valda kvalificeringens minimi- och maximiantal.
resellerIdEn tillåten återförsäljaridentifierare. Den kontoägda rutten accepterar ägda återförsäljare, dess konfigurerade delade återförsäljare eller det avsiktliga värdet för ingen återförsäljare. En obesläktad återförsäljare avvisas.
description, messageFlowBeskriv det faktiska syftet och hur samtycke samlas in. Varje ska innehålla 40–4096 tecken. Inkludera den verkliga användaråtgärden, formuläret eller processen; hitta inte på samtycke som din applikation inte samlar in.
sample1 … sample5Representativa meddelanden, normalt 20–1024 tecken vardera. Portalen kräver minst ett; behöriga nätverk kan kräva fler. Ange det antal som krävs av den aktuella kvalificeringen.
subscriberOptin, subscriberOptout, subscriberHelpDeklarera mottagarflöden som stöds med dessa exakta fältnamn. När ett flöde är aktiverat anger du dess nyckelords- och meddelandefält. Nätverkskrav kan göra vissa flöden obligatoriska.
optinKeywords, optoutKeywords, helpKeywordsDe faktiska igenkända nyckelorden, upp till 255 tecken. De måste överensstämma med den mottagande applikationens beteende.
optinMessage, optoutMessage, helpMessageMotsvarande meddelanden. Aktuella publicerade fältregler anger 20–1024 tecken. Inkludera verkligt kundstöd och beteende för avregistrering.
embeddedLink, embeddedPhone, embeddedLinkSampleDeklarera inbäddade länkar eller telefonnummer sanningsenligt. Ett i övrigt behörigt nätverk kan förbjuda dem. Ett länkexempel tillåter upp till 255 tecken.
mnoIdsEn valfri matris med behöriga numeriska nätverks-ID:n från kvalificering. Anta inte att varje nätverk stöder det valda användningsfallet.
numberPool, ageGated, directLendingTillämpliga kampanjegenskaper som JSON-booleska värden. Välj dem enligt den faktiska tjänsten.
privacyPolicyLink, termsAndConditionsLinkDina relevanta offentliga URL:er för integritetspolicy och villkor vid behov, upp till 2048 tecken vardera. De måste beskriva den faktiska meddelandetjänsten.
termsAndConditionsUttrycklig acceptans av tillämpliga kampanjvillkor. Portalen kräver true och dess guide samlar också in aktuella individuella bekräftelser.
autoRenewalOm kampanjen förnyas. Standard är true. Inaktivering av förnyelse tar inte bort ett minimiåtagande som redan är kopplat till en kampanj i produktion.
referenceId, tagDin kampanjreferens, upp till 50 tecken, och valfria taggar. referenceId är inte Idempotency-Key-huvudet.

Det publicerade schemat innehåller viss inkonsekvent versalisering i beskrivande tabeller. Den aktuella portalbegäran använder subscriberOptin och subscriberOptout såsom visas ovan. Behåll exakt den bokstavsformen. Den här guiden täcker det kundvända 10DLC-arbetsflödet; anta inte att en annan kanals obligatoriska fält eller aktiveringssteg är desamma.

Försök samma avsedda begäran igen på ett säkert sätt

Använd en Idempotency-Key för denna avsedda skapelse. Nyckeln är 1–128 utskrivbara ASCII-tecken utan blanksteg och är avgränsad till ägarkontot. Behåll HTTP-metoden, sökvägen, frågesträngen och de exakta byten i kroppen oförändrade vid ett nytt försök. En omformaterad JSON-fil står i konflikt även om dess värden är likvärdiga.

En pågående dubblett kan returnera HTTP 409 med Retry-After; slutförda begäranden kan spela upp sitt lagrade svar igen. Ett cachat fel bevisar inte att registret inte skapade något. Spara campaignId, requestId och eventuella korrelationshuvuden, inspektera befintlig kampanj och stäm av ett partiellt fel innan du överväger en ny nyckel.

Ett kampanj-ID är inte den slutliga sändningskonfigurationen

Svaret använder HTTP-status och direkt JSON. Vid lyckad skapelse behåller du campaignId och läser dess aktuella tillstånd:

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  "https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"

Portalens aktuella produktionsarbetsflöde delar också kampanjen med meddelandeoperatören och läser in varumärke/kampanj i sändningskontot. Dessa är separata åtgärder från detta offentliga skapelseanrop. En registerkampanj kan finnas även om ett senare delnings- eller operatörsinläsningssteg misslyckas.

Använd portalens integrerade arbetsflöde för skapelse i produktion när du behöver den kombinerade sekvensen för registrering, delning och operatörsinläsning. För en produktionskampanj som redan har skapats direkt med detta API behåller du dess kampanj-ID och får kontots operatörskonfiguration avstämd via kundstöd. Det aktuella kundgränssnittet exponerar inte en allmän återuppta-knapp för varje direkt skapad produktionskampanj. Skapa inte en ny registrering för att försöka aktivera igen. Bekräfta att kampanjen är aktiv och att operatörskonfigurationen har slutförts innan tilldelning av ett sändningsnummer. Numret måste också vara ägt, aktivt och SMS-aktiverat. Kampanjskapelse skickar inte meddelanden.

Avgifter för kampanjer i produktion

Aktuella konfigurerade månatliga kampanjavgifter
AnvändningsfallMånadsavgift
LOW_VOLUME, UCAAS_LOW$1.67
SOLE_PROPRIETOR$2.23
CHARITY$3.34
EMERGENCY$5.56
AGENTS_FRANCHISES$33.34
Andra konfigurerade reservanvändningsfall$11.12

Dessa detaljbelopp kontrollerades mot den aktuella portalkonfigurationen den 24 oktober 2026. Bekräfta det aktuella kvalificerade användningsfallet och visat pris före en inlämning i produktion. En monthlyFee i ett kvalificeringssvar från registret är inte automatiskt ditt MultiTEL-detaljpris.

Den aktuella portalen anger ett minimiåtagande på tre månader för icke-politiska produktionskampanjer. Granska tillämpliga villkor och förnyelseval innan bekräftelse. Registrering, nummerhyra, ytterligare granskning och meddelandeanvändning är separata avgifter. Ett lyckat skapelsesvar bevisar inte i sig att varje fakturerings- eller operatörsaktiveringssteg har slutförts.

Hantera validering och partiella fel

Läs HTTP-status och returnerad JSON. Valideringsfel kan vara matriser med code/description-objekt; lokala fel kan i stället vara objekt med message, status och, för vissa bearbetningsfel, requestId.

Kampanjfel
HTTP-resultatNästa åtgärd
400Korrigera de aktuella fälten eller idempotensnyckeln. Läs aktuell kvalificering, krävt exempelantal och krav för mottagarflöde på nytt.
401, 403 eller 404Kontrollera API-autentiseringsuppgifter och tillåten käll-IP, sedan ägarskap och behörigheter för varumärke/återförsäljare. Använd inte identifierare från ett annat konto.
402Granska produktionsfinansiering och köpbehörighet innan du försöker samma avsedda skapelse igen.
409Skilj mellan upprepat svar för en pågående begäran och en ändrad begäran med samma nyckel. Behåll befintliga kampanj- och begärandetaljer vid avstämning.
429 eller begränsare otillgängligRespektera Retry-After när den finns och behåll ursprunglig nyckel och exakt begäran.
500 eller 502Skapelse kan redan ha inträffat. Spara eventuell campaignId och requestId, kontrollera befintlig kampanj och återuppta eller stäm av dess aktivering i stället för att skapa en dubblett.