Migrate campaigns using the Infobip NNID
These migration steps are for Campaign Service Provider (CSP) and Connectivity Network Provider (CNP) customers who want to migrate their 10DLC campaigns to Infobip using the Infobip Net Number ID (NNID). Infobip provides a streamlined process, manages the NNID and Operator Service Record (OSR) updates, and works with you to ensure your migration is successful.
This guide applies to CSP/CNP customers migrating 10DLC campaigns using the Infobip NNID.
If you are managing your own NNID, see the Migrate campaigns using your own NNID guide instead.
Eligibility
Before you begin, ensure you meet the following eligibility criteria:
| Criteria | Description |
|---|---|
| CSP/CNP status | Only CSP/CNP can migrate campaigns within The Campaign Registry (TCR) ecosystem. |
| Letter of Authorization | You must provide a signed Letter of Authorization (LOA) not older than 30 days, authorizing Infobip to move the numbers to the Infobip NNID. |
Prerequisites
Complete the following prerequisites before starting the migration process. Only begin the migration after Infobip completes and confirms all items.
-
Number import enablement. Your account must be enabled for self-service number import before you can use the Numbers API (opens in a new tab). Request this enablement through your account manager.
-
Number pools (if applicable). If your campaign uses number pooling, contact your account manager, as this requires an additional revision for your campaign. Number pools are managed by Infobip.
-
Migration API enablement. Your account must be enabled for API access to the migration service. Request this enablement through your account manager. Once enabled, you can trigger migration requests as described in the migration steps below.
Only begin the migration process after Infobip completes and confirms all prerequisites.
Migration steps
The migration follows a six-step process. Your campaign moves through the following statuses:
1. Import your numbers into the Infobip platform
Import all numbers associated with the campaign into the Infobip platform. This ensures the numbers are available for selection during the migration request.
Use the following Numbers API endpoint to import your numbers:
POST https://api-ny2.infobip.com/numbers/2/numbers/importExample request:
curl --location 'https://api-ny2.infobip.com/numbers/2/numbers/import' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {apiKey}' \
--data '{
"numbers": [
"19546899283"
],
"country": "US",
"type": "VIRTUAL_LONG_NUMBER",
"capabilities": [
"SMS",
"MMS"
],
"skipOsrUpdate": true
}'Request parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
numbers | Array | Yes | List of phone numbers to import. |
country | String | Yes | The country code for the numbers (for example, "US"). |
type | String | Yes | The number type. Use VIRTUAL_LONG_NUMBER for 10DLC numbers. |
capabilities | Array | Yes | The capabilities of the numbers (for example, SMS, MMS). |
skipOsrUpdate | Boolean | Yes | Set to true to skip OSR updates during import, since Infobip manages the NNID. |
If your account is not enabled for self-service number import, contact your account manager for assistance.
2. Elect campaign to Infobip through TCR
Initiate the migration in TCR by calling the following endpoint:
POST /campaign/{campaignID}/migrateCnp/{upstreamCnpID}The Infobip CNP ID is OPMKT. See the TCR CSP API documentation (opens in a new tab) for full details.
3. Call the Infobip migration API
After electing the campaign to Infobip in TCR, trigger the Infobip migration endpoint:
POST https://{baseUrl}/number-registration/1/campaigns/migrateExample request:
curl --location 'https://{baseUrl}/number-registration/1/campaigns/migrate' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {apiKey}' \
--data '{
"name": "migrateCampaignCOJD655",
"externalCampaignId": "COJD655",
"numberPoolID": null,
"numbers": ["19168361160"],
"isClientManageNnid": false
}'Request parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
name | String | Yes | The name of the campaign. |
externalCampaignId | String | Yes | Your TCR Campaign ID. |
numberPoolID | String | No | The number pool ID to associate with this campaign. Set to null if not applicable. If you need a number pool for your campaign, contact your account manager first. |
numbers | Array | Yes | List of phone numbers for this campaign. Maximum of 200 numbers per request. |
isClientManageNnid | Boolean | Yes | Set to false so that Infobip manages the NNID and OSR updates on your behalf. |
Example response:
{
"id": "44e8c5fc-1f17-4f4c-9519-6606c907075f",
"referenceId": null,
"applicationId": "default",
"entityId": null,
"name": "migrateCampaignCOJD655",
"createdDate": "2026-03-04T09:08:43Z",
"lastModifiedDate": "2026-03-04T09:08:43Z",
"stage": "IN_MIGRATION",
"priority": null,
"campaignFeedback": null,
"externalCampaignId": "COJD655",
"numbers": null,
"externalDocuments": [],
"numberKeys": [],
"numberPreviews": [],
"type": "EXTERNAL_TEN_DIGIT_LONG_CODE"
}Response fields:
| Field | Description |
|---|---|
id | The unique Infobip UUID assigned to this campaign. Use this ID for all subsequent references. |
applicationId | The application context for the campaign (defaults to default). |
name | The campaign name as provided in the request. |
createdDate | Timestamp when the migration request was created (ISO 8601). |
stage | Current status of the campaign. Shows IN_MIGRATION immediately after submission. |
externalCampaignId | Your original TCR Campaign ID. |
type | The campaign type. Shows EXTERNAL_TEN_DIGIT_LONG_CODE for 10DLC migrations. |
4. In migration: Continue sending through current provider
After submitting the migration request, your campaign transitions to the In Migration status (confirmed by "stage": "IN_MIGRATION" in the API response). During this phase, continue sending traffic through your current upstream provider. You do not need to take any action while Infobip processes the migration.
5. Infobip updates the OSR record
Infobip attempts to override the NNID on the OSR records for your numbers automatically. If your numbers belong to a provider that does not allow automatic OSR overrides, the Infobip Registrations team requests formal approval of the OSR update using the LOA you provided.
For more details about this step, discuss with your account manager and use the shared list of the numbers you plan to migrate. You can also reach the Registrations team directly.
If your campaign is stuck in the In Migration status for an extended period, contact the Registrations team to process the OSR update for your numbers.
As soon as Infobip updates the OSR record, downtime begins. Your numbers stop sending and receiving messages until the migration completes and you switch traffic to Infobip. Plan this step carefully and coordinate with your team to minimize impact.
6. Migration complete: Switch traffic to Infobip
Infobip automatically accepts your campaign from TCR, provisions it with the carriers, and notifies you through a webhook event. The webhook payload includes:
campaignStatus=REGISTERED- The associated Infobip UUID
Once all numbers from the campaign are assigned to the Infobip NNID, the campaign moves to REGISTERED status.
Once you receive the REGISTERED webhook, switch your traffic to Infobip. The migration is complete and your downtime ends.
Subscribe to webhook events
To receive campaign status change notifications, subscribe through one of the following:
- Infobip web interface: See Subscriptions documentation
- Subscription API: See Subscriptions API documentation (opens in a new tab)
Best practices
-
Start small. Begin with a few low-volume campaigns to learn the process and enable Infobip to quickly resolve any issues.
-
Share in advance. Provide Infobip with a list of campaigns and associated numbers you plan to migrate ahead of time.
-
Coordinate OSR updates. Since Infobip manages the NNID and OSR updates, ensure your LOA is current (not older than 30 days) and that you have communicated the full list of numbers to your account manager.