> 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/rcs/autofill/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server. # Autofill RCS Campaign Information POST https://api.pinnacle.sh/campaigns/rcs/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/rcs/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 RCS information. - `brand` (string, optional) - `agent` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgent, optional) — Agent configured to the campaign. - `campaignId` (string, optional) — Unique identifier for the campaign. - `expectedAgentResponses` (list of string, optional) — List of what the agent might say to users. See the [Expected Agent Responses](/guides/campaigns/rcs-compliance#expected-agent-responses) section for requirements. - `links` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaLinks, optional) — Legal documentation links. - `useCaseDescription` (string, optional) — Detailed summary of what the brand is and how this agent will be used. See the [Use Case Behavior](/guides/campaigns/rcs-compliance#use-case-behavior) section for requirements. - `messagingType` (enum, optional) — Type of message the agent sends. `OTP`: One time passwords or verification codes. `TRANSACTIONAL`: Account updates, alerts, or notifications. `PROMOTIONAL`: Marketing, sales, or offers. `MULTI_USE`: Mixed message types. - Allowed values: `OTP`, `TRANSACTIONAL`, `PROMOTIONAL`, `MULTI_USE` - `ctaMedia` (string, optional) — URL to the opt-in form or a URL to a screenshot of the opt-in CTA. - `optInMethod` (string, optional) — Details on how opt-in is acquired. If it is done through a website or app, provide the link. See the [Opt-In Method](/guides/campaigns/rcs-compliance#opt-in-method) section for requirements. - `keywords` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywords, optional) - `traffic` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaTraffic, optional) - `ctaLanguage` (string, optional) — Required text that appears next to the opt-in checkbox for your opt-in form. This checkbox has to be unchecked by default. See the [CTA Language](/guides/campaigns/rcs-compliance#cta-language-opt-in-disclosure) section for requirements. - `demoTrigger` (string, optional) — Instructions on how an external reviewer can trigger messages and an example flow from the agent. This is usually an inbound text message to the agent that will start a flow of messages between the agent and the user. See the [Demo Trigger](/guides/campaigns/rcs-compliance#demo-trigger) section for requirements. ## 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 ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgent Agent configured to the campaign. - `name` (string, optional) — Name of the agent. - `description` (string, optional) — Description of the agent. - `color` (string, optional) — Color of the agent's buttons. - `emails` (list of CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentEmailsItems, optional) — List of emails. - `phones` (list of CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentPhonesItems, optional) — List of phone numbers. - `websites` (list of CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentWebsitesItems, optional) — List of urls. - `heroUrl` (string, optional) — Link to the agent's hero. Hero must be an image file with dimensions 1440x448px. - `iconUrl` (string, optional) — Link to the agent's icon. Icon must be an image file with dimensions 224x224px. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaLinks Legal documentation links. - `privacyPolicy` (string, optional) — Privacy policy URL. - `termsOfService` (string, optional) — Terms of service URL. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywords - `HELP` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsHelp, optional) - `OPT_IN` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptIn, optional) - `OPT_OUT` (CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptOut, optional) ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaTraffic - `monthlyWebsite` (integer, optional) — Estimated monthly website visitors. - `monthlyRcsEstimate` (integer, optional) — Estimated monthly RCS messages sent. ### 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 ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentEmailsItems - `email` (string, optional) — Email attached to the agent. - `label` (string, optional) — Label for the email. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentPhonesItems - `phone` (string, optional) — Phone number attached to the agent in E.164 format. - `label` (string, optional) — Label for the phone number. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaAgentWebsitesItems - `url` (string, optional) — Url attached to the agent. - `label` (string, optional) — Label for the url. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsHelp - `message` (string, optional) — Message sent when a user sends HELP. Must include at least one support contact method (phone, email, or website). See the [Keyword Response Messages](/guides/campaigns/rcs-compliance#keyword-response-messages) section for requirements. - `keywords` (list of string, optional) — Keywords that trigger help response. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptIn - `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 [Keyword Response Messages](/guides/campaigns/rcs-compliance#keyword-response-messages) section for requirements. - `keywords` (list of string, optional) — Keywords that trigger opt-in response. ### CampaignsRcsAutofillPostResponsesContentApplicationJsonSchemaKeywordsOptOut - `message` (string, optional) — Message sent when a user opts out. Must include brand name, acknowledge opt-out request and state user will not receive further messages. No marketing or re-engagement attempts. See the [Keyword Response Messages](/guides/campaigns/rcs-compliance#keyword-response-messages) section for requirements. - `keywords` (list of string, optional) — Keywords that trigger opt-out response. ## Examples **Request** ```json { "additionalInfo": "Please autofill missing campaign fields using my brand profile", "campaignId": "dlc_1234567890" } ``` **Response** ```json { "brand": "b_1234567890", "agent": { "name": "Pinnacle - RCS Demo", "description": "Experience the power of RCS messaging with interactive demos. Test rich features like carousels, suggested replies, and media sharing. Get started with our developer-friendly APIs.", "color": "#000000", "emails": [ { "email": "founders@trypinnacle.app", "label": "Email Us" } ], "phones": [ { "phone": "+14154467821", "label": "Contact us directly" } ], "websites": [ { "url": "https://www.trypinnacle.app/", "label": "Get started with Pinnacle" } ], "heroUrl": "https://pncl.to/D6pDSqGxqgfbCfQmw4gXdnlHu4uSB4", "iconUrl": "https://pncl.to/mq_tdIDenRb5eYpJiM8-3THCaUBrZP" }, "campaignId": "rcs_1234567890", "expectedAgentResponses": [ "Here are the things I can help you with.", "I can assist you with booking an appointment, or you may choose to book manually.", "Here are the available times to connect with a representative tomorrow.", "Your appointment has been scheduled." ], "links": { "privacyPolicy": "https://www.pinnacle.sh/privacy", "termsOfService": "https://www.pinnacle.sh/terms" }, "useCaseDescription": "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \"onboarding guide\" for new customers and a \"best-practices coach\" for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.
\n\nThe agent delivers a mix of operational updates and educational content (2–6 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n", "messagingType": "MULTI_USE", "ctaMedia": "https://www.pinnacle.sh/send", "optInMethod": "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.
\n\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n", "keywords": { "HELP": { "message": "Email founders@trypinnacle.app for support.", "keywords": [ "HELP", "SUPPORT" ] }, "OPT_IN": { "message": "Welcome back to Pinnacle!
\n🔔 You're now subscribed and will continue receiving important updates and news. Feel free to contact this us at any time for help.
\n\nReply STOP to opt out and HELP for support. Message & rates may apply.\n", "keywords": [ "START", "SUBSCRIBE" ] }, "OPT_OUT": { "message": "You've been unsubscribed from Pinnacle - RCS Demo and will no longer receive notifications. If you ever change your mind, reply START or SUBSCRIBE to rejoin anytime.", "keywords": [ "STOP", "UNSUBSCRIBE", "END" ] } }, "traffic": { "monthlyWebsite": 10000, "monthlyRcsEstimate": 10000 }, "ctaLanguage": "By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.", "demoTrigger": "Text \"START\" to trigger the flow." } ``` **SDK Code** ```python Autofilled RCS Campaign import requests url = "https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign const url = 'https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign request('POST', 'https://api.pinnacle.sh/campaigns/rcs/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 RCS Campaign using RestSharp; var client = new RestClient("https://api.pinnacle.sh/campaigns/rcs/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 RCS 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/rcs/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.