> 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/campaigns/toll-free/autofill/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server. # Autofill Toll-Free Campaign Information POST https://api.pinnacle.sh/campaigns/toll-free/autofill Content-Type: application/json Generate campaign details based off existing campaign and the brand it's connected to. Reference: https://docs.pinnacle.sh/api-reference/campaigns/toll-free/autofill ## Authentication - `PINNACLE-API-KEY` header (required) — API Key authentication via header ## Request ### Body (application/json) This endpoint expects an autofillCampaignSchema. - `additionalInfo` (string, optional) — Any additional information you want to provide. - `campaignId` (string, optional) — Unique identifier for the campaign. - When autofilling 10DLC campaigns, it must begin with the prefix `dlc_` (e.g., `dlc_1234567890`) - When autofilling Toll-Free campaigns, it must begin with the prefix `tf_` (e.g., `tf_1234567890`) - When autofilling RCS campaigns, it must begin with the prefix `rcs_` (e.g., `rcs_1234567890`) ## Response ### 200 Returns autofilled toll-free information. - `brand` (string, optional) - `campaignId` (string, optional) — Unique identifier for the campaign. Must begin with the prefix `tf_`. - `keywords` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywords, optional) — Keyword response configuration. - `links` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaLinks, optional) — Legal documentation links. - `monthlyVolume` (enum, optional) — Message volume. - Allowed values: `10`, `100`, `1,000`, `10,000`, `100,000`, `250,000`, `500,000`, `750,000`, `1,000,000`, `5,000,000`, `10,000,000+` - `name` (string, optional) — Display name of the campaign. This is not sent to carriers for approval and is only used for your reference on the Pinnacle dashboard. - `optIn` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaOptIn, optional) — Opt-in method and workflow. - `options` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaOptions, optional) — Campaign configuration options. - `productionMessageContent` (string, optional) — Example message(s) that would be sent in production. Should reflect the actual content users will receive. See the [Production Message Content](/guides/campaigns/opt-in-compliance#production-message-content) section for requirements. - `useCase` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaUseCase, optional) — Use case classification for the campaign. ## Errors ### 400 Bad Request Error Validation failed. The payload has missing required fields and/or invalid types. See [https://zod.dev/error-formatting](https://zod.dev/error-formatting) for more information. - `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 ### 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. ### 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. ## Types ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywords Keyword response configuration. - `HELP` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywordsHelp, optional) — Help keyword settings. - `OPT_IN` (CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptIn, optional) — Opt-in keyword settings. ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaLinks Legal documentation links. - `privacyPolicy` (string, optional) — Privacy policy URL. - `termsOfService` (string, optional) — Terms of service URL. ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaOptIn Opt-in method and workflow. - `method` (enum, optional) — Method used to collect opt-in consent from users. See the [Opt-In Methods and Workflow](/guides/campaigns/opt-in-compliance#opt-in-methods-and-workflow) section for detailed requirements. - `DIGITAL`: Web form, app, or online checkout. Requires URL to the form. Checkbox must not be pre-selected. - `PAPER`: Physical paper form (in-store, event, etc.). Requires URL/image of the form with SMS disclosures visible. - `TEXT`: Text-to-join keyword campaign. Users text a keyword to opt in. Requires the keyword and number. - `VERBAL`: In-person or phone consent. Not allowed for marketing campaigns. Requires script and confirmation SMS details. - Allowed values: `DIGITAL`, `PAPER`, `TEXT`, `VERBAL` - `url` (string, optional) — URL where the opt-in form or documentation can be found. - `workflowDescription` (string, optional) — Describe your opt-in workflow. See the [Opt-In Methods and Workflow](/guides/campaigns/opt-in-compliance#opt-in-methods-and-workflow) section for requirements and examples. ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaOptions Campaign configuration options. - `ageGated` (boolean, optional) — Whether the campaign is age-gated. ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaUseCase Use case classification for the campaign. - `summary` (string, optional) — Detailed summary of the use case explaining what messages will be sent and how users interact with the campaign. See the [Use Case Summary](/guides/campaigns/opt-in-compliance#use-case-summary) section for requirements. - `value` (enum, optional) — The primary use case classification for this campaign. - Allowed values: `APP_NOTIFICATIONS`, `APPOINTMENTS`, `AUCTIONS`, `AUTO_REPAIR_SERVICES`, `BANK_TRANSFERS`, `BILLING`, `BOOKING_CONFIRMATIONS`, `BUSINESS_UPDATES`, `CAREER_TRAINING`, `CHATBOT`, `CONVERSATIONAL_ALERTS`, `COURIER_SERVICES_DELIVERIES`, `COVID_19_ALERTS`, `EMERGENCY_ALERTS`, `EVENTS_PLANNING`, `FINANCIAL_SERVICES`, `FRAUD_ALERTS`, `FUNDRAISING`, `GENERAL_MARKETING`, `GENERAL_SCHOOL_UPDATES`, `HEALTHCARE_ALERTS`, `HOUSING_COMMUNITY_UPDATES`, `HR_STAFFING`, `INSURANCE_SERVICES`, `JOB_DISPATCH`, `LEGAL_SERVICES`, `MIXED`, `MOTIVATIONAL_REMINDERS`, `NOTARY_NOTIFICATIONS`, `ORDER_NOTIFICATIONS`, `POLITICAL`, `PUBLIC_WORKS`, `REAL_ESTATE_SERVICES`, `RELIGIOUS_SERVICES`, `REPAIR_DIAGNOSTICS_ALERTS`, `REWARDS_PROGRAM`, `SURVEYS`, `SYSTEM_ALERTS`, `TWO_FA`, `VOTING_REMINDERS`, `WAITLIST_ALERTS`, `WEBINAR_REMINDERS`, `WORKSHOP_ALERTS` ### 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 ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywordsHelp Help keyword settings. - `message` (string, optional) — Message sent when a user sends HELP. Must include at least one support contact method (phone, email, or website). See the [Help keyword requirements](/guides/campaigns/opt-in-compliance#keyword-response-messages). ### CampaignsTollFreeAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptIn Opt-in keyword settings. - `message` (string, optional) — Message sent when a user opts in. Must include brand name, confirmation of subscription, and disclosures (STOP and HELP instructions, message and data rates). See the [Opt-In keyword requirements](/guides/campaigns/opt-in-compliance#keyword-response-messages). - `keywords` (list of string, optional) — Keywords that trigger opt-in response. ## Examples **Request** ```json { "additionalInfo": "Please autofill missing campaign fields using my brand profile", "campaignId": "dlc_1234567890" } ``` **Response** ```json { "brand": "b_1234567890", "campaignId": "tf_1234567890", "keywords": { "HELP": { "message": "Pinnacle Software Development Inc.: For assistance, visit https://pinnacle.sh/support or email founders@trypinnacle.app. Msg&data rates may apply. Reply STOP to cancel." }, "OPT_IN": { "message": "Pinnacle Software Development Inc.: You're enrolled in account & security alerts. Msg&data rates may apply. Message frequency varies. Reply HELP for help, STOP to cancel. Terms: https://pinnacle.sh/terms/ Privacy: https://pinnacle.sh/privacy/", "keywords": [ "START", "SUBSCRIBE" ] } }, "links": { "privacyPolicy": "https://www.pinnacle.sh/privacy", "termsOfService": "https://www.pinnacle.sh/terms" }, "monthlyVolume": "10,000", "name": "Pinnacle", "optIn": { "method": "PAPER", "url": "https://www.pinnacle.sh/opt-in", "workflowDescription": "End users opt-in when filling out the in-person intake forms where they will write their phone numbers and check a box indicating that they've opted in to messages. Link to paper form: https://www.pinnacle.sh/opt-in" }, "options": { "ageGated": false }, "productionMessageContent": "• Hi [First Name], your order #[Order ID] has shipped and will arrive [Date]. Track here: [URL]. Reply HELP for help or STOP to unsubscribe.\n• Heads up! [Friend Name] shared 3 photos. Reply VIEW to see them. Reply HELP for help or STOP to unsubscribe.\n• Hello [First Name]! I'm Pinnacle's virtual assistant. How can I help you today? Ask about order status, account updates, photo sharing, or more. Reply HELP for assistance or STOP to unsubscribe.", "useCase": { "summary": "Customers who have opted into text messages can interact with our automated SMS chatbot to receive transaction-driven notifications (order status, shipping updates, account alerts), ask support questions, share photos with friends, and manage their account details via simple, conversational text flows. All messages are transactional or interactive flows customers opt into. Users can send images (e.g., receipts) and get guided replies.", "value": "CHATBOT" } } ``` **SDK Code** ```python Autofilled Toll-Free Campaign import requests url = "https://api.pinnacle.sh/campaigns/toll-free/autofill" payload = { "additionalInfo": "Please autofill missing campaign fields using my brand profile", "campaignId": "dlc_1234567890" } headers = { "PINNACLE-API-KEY": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript Autofilled Toll-Free Campaign const url = 'https://api.pinnacle.sh/campaigns/toll-free/autofill'; const options = { method: 'POST', headers: {'PINNACLE-API-KEY': '', 'Content-Type': 'application/json'}, body: '{"additionalInfo":"Please autofill missing campaign fields using my brand profile","campaignId":"dlc_1234567890"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Autofilled Toll-Free Campaign package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/campaigns/toll-free/autofill" payload := strings.NewReader("{\n \"additionalInfo\": \"Please autofill missing campaign fields using my brand profile\",\n \"campaignId\": \"dlc_1234567890\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("PINNACLE-API-KEY", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Autofilled Toll-Free Campaign require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/campaigns/toll-free/autofill") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["PINNACLE-API-KEY"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"additionalInfo\": \"Please autofill missing campaign fields using my brand profile\",\n \"campaignId\": \"dlc_1234567890\"\n}" response = http.request(request) puts response.read_body ``` ```java Autofilled Toll-Free Campaign import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.pinnacle.sh/campaigns/toll-free/autofill") .header("PINNACLE-API-KEY", "") .header("Content-Type", "application/json") .body("{\n \"additionalInfo\": \"Please autofill missing campaign fields using my brand profile\",\n \"campaignId\": \"dlc_1234567890\"\n}") .asString(); ``` ```php Autofilled Toll-Free Campaign request('POST', 'https://api.pinnacle.sh/campaigns/toll-free/autofill', [ 'body' => '{ "additionalInfo": "Please autofill missing campaign fields using my brand profile", "campaignId": "dlc_1234567890" }', 'headers' => [ 'Content-Type' => 'application/json', 'PINNACLE-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp Autofilled Toll-Free Campaign using RestSharp; var client = new RestClient("https://api.pinnacle.sh/campaigns/toll-free/autofill"); var request = new RestRequest(Method.POST); request.AddHeader("PINNACLE-API-KEY", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"additionalInfo\": \"Please autofill missing campaign fields using my brand profile\",\n \"campaignId\": \"dlc_1234567890\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift Autofilled Toll-Free Campaign import Foundation let headers = [ "PINNACLE-API-KEY": "", "Content-Type": "application/json" ] let parameters = [ "additionalInfo": "Please autofill missing campaign fields using my brand profile", "campaignId": "dlc_1234567890" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.pinnacle.sh/campaigns/toll-free/autofill")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data 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.