> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.pinnacle.sh/v-2/api-reference/status/dlc-campaign/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server. # Get 10DLC Campaign Status GET https://api.pinnacle.sh/status/dlc-campaign/{campaignId} Retrieve a 10DLC campaign's status. Reference: https://docs.pinnacle.sh/api-reference/status/dlc-campaign ## Authentication - `PINNACLE-API-KEY` header (required) — API Key authentication via header ## Request ### Path parameters - `campaignId` (string, required) — The unique identifier of the 10DLC campaign you want to retrieve the status for. This identifier is a string that always begins with the prefix `dlc_`, for example: `dlc_1234567890`. ## Response ### 200 Successfully retrieved. - `error` (string, required) — Summary of errors related to the verification process. These errors may request additional information or point out erroneous and/or missing fields. - `id` (string, required) — The unique identifier of the 10DLC campaign. This identifier is a string that always begins with the prefix `dlc_`, for example: `dlc_1234567890`. - `status` (enum, required) — Current review status of the DLC campaign. `INCOMPLETE`: Not submitted. `IN REVIEW`: Being reviewed by carriers. `VERIFIED`: Approved and ready to send messages. `FAILED`: Issues and errors related to the campaign's details. See [error](dlc-campaign#response.body.error) for these potential issues. - Allowed values: `INCOMPLETE`, `IN REVIEW`, `VERIFIED`, `FAILED` - `updates` (GetDlcCampaignStatusResponseUpdates, required) — Status of local long code numbers that are being attached to this campaign. Note that phone numbers can only be attached to `VERIFIED` campaigns via the [attach campaign endpoint](../phone-numbers/attach-campaign). ## Errors ### 400 Bad Request Error The request was unacceptable, often due to providing an invalid update. Errors may originate from invalid payload or from Pinnacle's additional validation checks. For example, providing an URL that cannot be accessed, updating a campaign that is currently being reviewed, updating data that you cannot access, sending a malformed message, and so on. For `Pinnacle Validation Error` inspect the `error` payload to determine the source of the failure. These errors are likely due to additional validation and business logic checks. For `Request Validation Error` inspect the `description` and `errors` payload to determine the source of failure. These errors are likely due to invalid payload inside the request. - `Get10DlcCampaignStatusRequestBadRequestError` ### 401 Unauthorized Error The request lacks valid authentication credentials or the provided credentials are invalid. Ensure you're including a valid API key in the request headers and that your account has the necessary permissions to access this endpoint. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 403 Forbidden Error Your subscription does not include access to this feature. This occurs when attempting to use functionality that requires a higher subscription tier. Please upgrade your subscription to access this feature. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 404 Not Found Error The requested resource could not be found. This may occur if the identifier is incorrect, the resource has been deleted, or you don't have permission to access it. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 500 Internal Server Error An unexpected error occurred on Pinnacle's servers while processing your request. If this error persists, please contact support with the request details. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 501 Not Implemented Error The requested functionality is not implemented on the server. This typically indicates that the feature or endpoint you attempted to access is unavailable or not yet supported. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ## Types ### GetDlcCampaignStatusResponseUpdates Status of local long code numbers that are being attached to this campaign. Note that phone numbers can only be attached to `VERIFIED` campaigns via the [attach campaign endpoint](../phone-numbers/attach-campaign). - `number` (string, required) — Number associated with the campaign in E.164 format. - `status` (enum, required) — Current assignment status of the phone number to this campaign. `ASSIGNED`: Number assigned and ready to send messages. `PENDING_ASSIGNMENT`: In the process of being assigned. This should take no more than 10 minutes. `PENDING_UNASSIGNMENT`: In the process of being unassigned. This should take no more that 5 minutes. `FAILED_ASSIGNMENT`: Failed to assign the number. Use the phone number status endpoint to see errors. `FAILED_UNASSIGNMENT`: Failed to unassign the number. Use the phone number status endpoint to see errors. - Allowed values: `ASSIGNED`, `FAILED_ASSIGNMENT`, `FAILED_UNASSIGNMENT`, `PENDING_ASSIGNMENT`, `PENDING_UNASSIGNMENT` - `errors` (list of string, required) — List of errors that occurred. ### ZodError - `description` (string, required) — Human-readable summary of validation failures. - `errors` (ZodErrorErrors, required) — Structured dictionary of issues containing two main sections: - `errors`: Array of global validation errors not tied to specific fields - `properties`: Object mapping field names to their specific validation errors, where each field contains an `errors` array ### Error Standard error response returned when a request cannot be processed successfully. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### ZodErrorErrors Structured dictionary of issues containing two main sections: - `errors`: Array of global validation errors not tied to specific fields - `properties`: Object mapping field names to their specific validation errors, where each field contains an `errors` array ## Examples **Response** ```json { "error": "", "id": "dlc_1234567890", "status": "IN REVIEW", "updates": { "number": "+14151234567", "status": "PENDING_ASSIGNMENT", "errors": [] } } ``` **SDK Code** ```python 10DLC Campaign Status import requests url = "https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890" headers = {"PINNACLE-API-KEY": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript 10DLC Campaign Status const url = 'https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890'; const options = {method: 'GET', headers: {'PINNACLE-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go 10DLC Campaign Status package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("PINNACLE-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby 10DLC Campaign Status require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["PINNACLE-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java 10DLC Campaign Status import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890") .header("PINNACLE-API-KEY", "") .asString(); ``` ```php 10DLC Campaign Status request('GET', 'https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890', [ 'headers' => [ 'PINNACLE-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp 10DLC Campaign Status using RestSharp; var client = new RestClient("https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890"); var request = new RestRequest(Method.GET); request.AddHeader("PINNACLE-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift 10DLC Campaign Status import Foundation let headers = ["PINNACLE-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.pinnacle.sh/status/dlc-campaign/dlc_1234567890")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` > One API for RCS, iMessage, MMS, and SMS. Build, test, and scale every channel — send your first message in minutes, not weeks.