Skip to main content
PATCH
Update Project

Authorizations

X-API-Key
string
header
required

Authenticate every request by passing your API key in the X-API-Key header. Keys are scoped to your organization hierarchy.

Headers

Idempotency-Key
string

Optional idempotency key: a unique string of 16-200 printable ASCII characters (a UUID is recommended). Retrying the write with the same key within 24 hours returns the stored response of the first call with an X-Idempotent-Replayed: true response header instead of executing it again. Reusing a key with a different request body returns 422 (IDEMPOTENCY_MISMATCH); a duplicate sent while the first call is still running returns 409 with a Retry-After header. Keys are scoped per endpoint and organization.

Required string length: 16 - 200

Path Parameters

id
string
required

Resource ID

Body

application/json
name
string
message_text
string

Message text. Supports merge tags ({first_name|there}, contact custom fields) and {tracking_url} when link tracking is enabled on the project. Limited to 10 SMS parts (1,530 GSM-7 or 670 Unicode characters, counted with merge tags removed), or 1,500 characters when the project is MMS (protocol, or the stored protocol when omitted) or media_ids is set; longer text is rejected with 400 and a message naming the limit.

Maximum string length: 1600
protocol
enum<string>
Available options:
sms,
mms
channel
enum<string>

Change the messaging channel. Sending any of channel, brand_id, campaign_id, or toll_free_verification_id requires the full setup for the effective channel plus phone_number_ids (see the endpoint description). Switching to toll-free or short-code clears the brand and campaign.

Available options:
10dlc,
toll-free,
short-code
brand_id
string<uuid>

Required with campaign_id when the effective channel is 10dlc; omit otherwise. Must belong to the project's organization.

campaign_id
string<uuid>

Required with brand_id when the effective channel is 10dlc; omit otherwise. Must belong to brand_id. The brand follows the campaign.

toll_free_verification_id
string<uuid>

Required when the effective channel is toll-free; omit otherwise. Every number in phone_number_ids must be linked to this registration.

phone_number_ids
string[]

Replace the project's sending phone numbers (1-49). New conversations rotate across them; existing conversations keep their already-assigned sticky number.

Required array length: 1 - 49 elements
phone_number_id
string
deprecated

Deprecated. Use phone_number_ids. A single id is treated as a one-element phone_number_ids.

contact_list_ids
string[]
Minimum array length: 1
suppression_list_ids
string[]
media_ids
string[]

Where tracking links redirect. May embed the selected link parameter via a {field} placeholder named after it (see POST /projects); a placeholder that does not match the effective link_tracking_param_field is rejected with a 400 (INVALID_LINK_PLACEHOLDER). May also be exactly 'https://{<link_tracking_param_field>}' to send each recipient to the URL in that contact field; then link_tracking_fallback_url is required. '{phone}' is not allowed as a whole URL.

Contact field carried on tracking-link redirects ('phone', a custom-field name, or null for none). Appended as a query pair, or embedded in place of a matching {field} placeholder in the destination URL.

Maximum string length: 64

Redirect used when a recipient's link_tracking_param_field value is empty or not a valid URL. Required when link_tracking_destination_url is a whole-URL placeholder (e.g. 'https://{custom_url}'); rejected with a 400 (INVALID_LINK_PLACEHOLDER) otherwise.

Whether the 'STOP=END' opt-out footer is appended to every outbound message.

Response

Project updated. Returns the full project object (same shape as GET /projects/{id}).

success
boolean
required
data
object
required