CXP API overview
Use the CXP API to connect trusted websites, portals, and backend automations to
your customer experience workflows. The first available endpoint creates or
continues a conversation from a structured form submission.
Prerequisites
Before you send a request, obtain these values from your Crescendo contact:
- Your tenant ID
- A tenant API key with the
cxm:conversations.write scope (or a broader CXP
write scope)
- The production API base URL
Keep API keys in a server-side secret store. Never put an API key in browser,
mobile app, or public form code. Send requests over HTTPS.
Authenticate
Send the API key as a bearer token:
The tenant in the URL and every ID, email channel, agent, or team referenced by
the request must belong to the API key’s authorized tenant. Write endpoints do
not accept a bearer token in the query string.
Request conventions
- Use
Content-Type: application/json.
- Keep the complete JSON body at or below 1 MiB.
- Unknown request properties are rejected.
- Optional blank strings are treated as absent where the endpoint permits
them.
- Email addresses are trimmed and normalized to lowercase; phone numbers are
normalized to E.164 format.
You may send X-Request-Id or X-Correlation-Id to help Crescendo support
trace a request. These headers are tracing identifiers only. They do not make a
request idempotent or suppress duplicate work.
Every accepted POST executes. Repeating a request can create another
conversation or append another customer message. If a timeout or transport
error makes the outcome unclear, verify the result before retrying when
possible.
Responses and errors
Success responses contain the result of the requested operation. They can also
contain a warnings array when the primary operation succeeded but a
documented best-effort follow-up did not. Treat warnings according to the
endpoint guide; they are not error responses.
Errors use a stable JSON envelope:
For 429 RateLimitExceeded, wait for the number of seconds in the
Retry-After response header. A 502 or 504 can have an ambiguous mutation
outcome; retrying can duplicate the effect.
Next step
Follow Create a conversation for request mappings,
routing behavior, and copyable examples. Open API reference in the
developer navigation for the generated operation and machine-readable
contract.