Messaging · RCS
Requests an RCS agent.
Request
Send your API key as Authorization: Bearer pz_live_.... Read-only keys cannot call it. Keys with the messages resource group disabled get 403 resource_group_disabled. Authentication
Headers
| Name | Type | Notes |
|---|---|---|
Idempotency-Key | string | Up to 255 charactersRetries with the same key return the original result. See Idempotency |
Request body
application/json, required
profileIdstringrequiredbrandIdstringbrandobject9 child fields
displayNamestringrequiredUp to 100 characters.
legalNamestringrequiredUp to 100 characters.
legalEntityTypestringrequiredOne of
LIMITED_LIABILITY_COMPANY,SOLE_PROPRIETORSHIP,PARTNERSHIP,CORPORATION,S_CORPORATION.organizationTypestringrequiredOne of
PRIVATE_PROFIT,PUBLIC_PROFIT,NON_PROFIT,GOVERNMENT.websiteUrlstring (URL)requiredtaxIdstringrequiredstockSymbolstringaddressobjectrequired6 child fields
line1stringrequiredline2stringcitystringrequiredstatestringpostalCodestringrequiredcountrystringrequiredOne of
US,GB,AT,BD,BR,CD,DE,ES,FR,IN,IT,MX,NG,NL,NO,PT,SE,SG,ZA.
contactobjectrequired5 child fields
firstNamestringrequiredlastNamestringrequiredtitlestringemailstring (email)requiredphonestringrequired
displayNamestringrequiredUp to 40 characters.
useCasestringrequiredOne of
MULTI_USE,PROMOTIONAL,TRANSACTIONAL,OTP.profileobjectrequired9 child fields
descriptionstringrequiredUp to 100 characters.
logoUrlstring (URL)requiredheroUrlstring (URL)requiredbrandColorstringrequiredprivacyPolicyUrlstring (URL)requiredtermsUrlstring (URL)requiredphoneobject2 child fields
numberstringrequiredlabelstringrequiredUp to 25 characters.
websiteobject2 child fields
urlstring (URL)requiredlabelstringrequiredUp to 25 characters.
emailobject2 child fields
addressstring (email)requiredlabelstringrequiredUp to 25 characters.
smsFallbackFromstring
Example
curl -X POST "https://api.pozy.ai/v1/rcs/agents" \
-H "Authorization: Bearer $POZY_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"profileId": "6a0b6573846efc28aaa9a3ff",
"displayName": "Acme",
"useCase": "MULTI_USE",
"profile": {
"description": "A short description",
"logoUrl": "https://pozy.ai/media/example-1.jpg",
"heroUrl": "https://pozy.ai/media/example-1.jpg",
"brandColor": "string",
"privacyPolicyUrl": "https://pozy.ai/media/example-1.jpg",
"termsUrl": "https://pozy.ai/media/example-1.jpg"
}
}'import { randomUUID } from "node:crypto";
const res = await fetch("https://api.pozy.ai/v1/rcs/agents", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.POZY_API_KEY}`,
"Idempotency-Key": randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
profileId: "6a0b6573846efc28aaa9a3ff",
displayName: "Acme",
useCase: "MULTI_USE",
profile: {
description: "A short description",
logoUrl: "https://pozy.ai/media/example-1.jpg",
heroUrl: "https://pozy.ai/media/example-1.jpg",
brandColor: "string",
privacyPolicyUrl: "https://pozy.ai/media/example-1.jpg",
termsUrl: "https://pozy.ai/media/example-1.jpg"
}
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);import os
import requests
resp = requests.post(
"https://api.pozy.ai/v1/rcs/agents",
headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
json={
"profileId": "6a0b6573846efc28aaa9a3ff",
"displayName": "Acme",
"useCase": "MULTI_USE",
"profile": {
"description": "A short description",
"logoUrl": "https://pozy.ai/media/example-1.jpg",
"heroUrl": "https://pozy.ai/media/example-1.jpg",
"brandColor": "string",
"privacyPolicyUrl": "https://pozy.ai/media/example-1.jpg",
"termsUrl": "https://pozy.ai/media/example-1.jpg",
},
},
timeout=30,
)
resp.raise_for_status()
print(resp.json())Response
201 on success
agentobject19 child fields
idstringprofileIdstringaccountIdstringCan be null.
countrystringstatusstringOne of
requested,changes_requested,brand_vetting,agent_review,testing,launch_review,launching,live,rejected,deactivated.displayNamestringUp to 40 characters.
useCasestringOne of
MULTI_USE,PROMOTIONAL,TRANSACTIONAL,OTP.profileobject9 child fields
descriptionstringrequiredUp to 100 characters.
logoUrlstring (URL)requiredheroUrlstring (URL)requiredbrandColorstringrequiredprivacyPolicyUrlstring (URL)requiredtermsUrlstring (URL)requiredphoneobject2 child fields
numberstringrequiredlabelstringrequiredUp to 25 characters.
websiteobject2 child fields
urlstring (URL)requiredlabelstringrequiredUp to 25 characters.
emailobject2 child fields
addressstring (email)requiredlabelstringrequiredUp to 25 characters.
brandobjectOne of:
Rcs Brand (12 fields)
displayNamestringrequiredUp to 100 characters.
legalNamestringrequiredUp to 100 characters.
legalEntityTypestringrequiredOne of
LIMITED_LIABILITY_COMPANY,SOLE_PROPRIETORSHIP,PARTNERSHIP,CORPORATION,S_CORPORATION.organizationTypestringrequiredOne of
PRIVATE_PROFIT,PUBLIC_PROFIT,NON_PROFIT,GOVERNMENT.websiteUrlstring (URL)requiredtaxIdstringrequiredstockSymbolstringaddressobjectrequired6 child fields
line1stringrequiredline2stringcitystringrequiredstatestringpostalCodestringrequiredcountrystringrequiredOne of
US,GB,AT,BD,BR,CD,DE,ES,FR,IN,IT,MX,NG,NL,NO,PT,SE,SG,ZA.
contactobjectrequired5 child fields
firstNamestringrequiredlastNamestringrequiredtitlestringemailstring (email)requiredphonestringrequired
idstringstatusstringOne of
draft,vetting,verified,rejected.createdAtstring (date-time)
launchRequestobjectOne of:
Rcs Launch Request (7 fields)
companyOverviewstringrequiredUp to 2000 characters.
agentOverviewstringrequiredUp to 2000 characters.
interactionsarray of objectrequiredAt least 1 item.
2 child fields
typestringrequiredOne of
TRANSACTIONAL_UPDATES,CUSTOMER_SUPPORT,LOYALTY_OR_REWARD,MARKETING_OR_PROMOTIONAL,ACCOUNT_ALERTS,TWO_WAY_CONVERSATION,OTHER.descriptionstring
messageExamplesarray of stringrequiredAt least 3 items. Up to 10 items. Each item: up to 2000 characters.
consentobjectrequired9 child fields
optInMethodsarray of objectrequiredAt least 1 item.
2 child fields
typestringrequiredOne of
SMS,WEBSITE,MOBILE_APP,QR_CODE,SALE_POINT,OTHER.descriptionstring
callToActionstringrequiredcallToActionUrlstring (URL)callToActionMediaUrlstring (URL)doubleOptInbooleanrequireddoubleOptInMessagestringoptInMessagestringrequiredhelpResponsestringrequiredoptOutResponsestringrequired
testVideoUrlstring (URL)requiredadditionalInformationstringUp to 2000 characters.
carrierApprovalsarray of object6 child fields
approvalIdstringscopestringOne of
carrier,hub,bot.statusstringOne of
PENDING,SUBMITTED,APPROVED,REJECTED.carrierstringCan be null.
approvedAtstring (date-time)Can be null.
rejectedReasonstringCan be null.
testDevicesarray of object3 child fields
testDeviceIdstringphoneNumberstringinviteStatusstringOne of
PENDING,ACCEPTED,DECLINED.
smsFallbackFromstringCan be null.
reviewNotestringCan be null.
declineReasonstringCan be null.
requestedAtstring (date-time)Can be null.
submittedAtstring (date-time)Can be null.
liveAtstring (date-time)Can be null.
createdAtstring (date-time)
{
"agent": {
"id": "6bfebd43ddc270f6d2c56fc5",
"profileId": "6a0b6573846efc28aaa9a3ff",
"accountId": "696e0b682d0a31188e7a2ba9",
"country": "US",
"status": "requested",
"displayName": "Acme",
"useCase": "MULTI_USE",
"profile": {
"description": "A short description",
"logoUrl": "https://pozy.ai/media/example-1.jpg",
"heroUrl": "https://pozy.ai/media/example-1.jpg",
"brandColor": "string",
"privacyPolicyUrl": "https://pozy.ai/media/example-1.jpg",
"termsUrl": "https://pozy.ai/media/example-1.jpg",
"phone": {
"number": "string",
"label": "string"
},
"website": {
"url": "https://pozy.ai/media/example-1.jpg",
"label": "string"
},
"email": {
"address": "alex@example.com",
"label": "string"
}
},
"brand": {
"displayName": "Acme",
"legalName": "Acme",
"legalEntityType": "LIMITED_LIABILITY_COMPANY",
"organizationType": "PRIVATE_PROFIT",
"websiteUrl": "https://pozy.ai/media/example-1.jpg",
"taxId": "6e274285e4e83c5f91aee85e",
"stockSymbol": "string",
"address": {
"line1": "string",
"line2": "string",
"city": "string",
"state": "string",
"postalCode": "string",
"country": "US"
},
"contact": {
"firstName": "Acme",
"lastName": "Acme",
"title": "Launch day",
"email": "alex@example.com",
"phone": "+14155550123"
},
"id": "6bfebd43ddc270f6d2c56fc5",
"status": "draft",
"createdAt": "2026-10-02T09:00:00.000Z"
},
"launchRequest": {
"companyOverview": "string",
"agentOverview": "string",
"interactions": [
{
"type": "TRANSACTIONAL_UPDATES",
"description": "A short description"
}
],
"messageExamples": [
"Hello from Pozy"
],
"consent": {
"optInMethods": [
{
"type": "SMS",
"description": "A short description"
}
],
"callToAction": "string",
"callToActionUrl": "https://pozy.ai/media/example-1.jpg",
"callToActionMediaUrl": "https://pozy.ai/media/example-1.jpg",
"doubleOptIn": true,
"doubleOptInMessage": "Hello from Pozy",
"optInMessage": "Hello from Pozy",
"helpResponse": "string",
"optOutResponse": "string"
},
"testVideoUrl": "https://pozy.ai/media/example-1.jpg",
"additionalInformation": "string"
},
"carrierApprovals": [
{
"approvalId": "66666666666666661f2e3d4c",
"scope": "carrier",
"status": "PENDING",
"carrier": "string",
"approvedAt": "2026-10-02T09:00:00.000Z",
"rejectedReason": "string"
}
],
"testDevices": [
{
"testDeviceId": "653426651346b544a97028d1",
"phoneNumber": "+14155550123",
"inviteStatus": "PENDING"
}
],
"smsFallbackFrom": "string",
"reviewNote": "string",
"declineReason": "string",
"requestedAt": "2026-10-02T09:00:00.000Z",
"submittedAt": "2026-10-02T09:00:00.000Z",
"liveAt": "2026-10-02T09:00:00.000Z",
"createdAt": "2026-10-02T09:00:00.000Z"
}
}Errors
Errors use one shape: { error, type, code, param?, details? }. The ones you are most likely to see here:
| 400 | invalid_request_error | A parameter or body field is missing or invalid. param names it. |
| 401 | authentication_error | The API key is missing, revoked or expired. |
| 403 | permission_error | The key is read-only, scoped to other profiles, or has this resource group disabled. |
| 429 | rate_limit_error | Too many requests this minute. Wait for Retry-After seconds. |
Every code is listed in Errors.