How CCX runs, and how to check it yourself.
This page doesn't show availability or incident history, because the external monitor that would measure them isn't published yet. Until it is, here are the platform's components, an endpoint your own system can check and the shortest path to our team.
WhatsApp +55 11 98706-2501 · comercial@ccxmessages.com
Once the external monitor with history is live, availability and incidents will show up on this page.
curl -s https://api.messages.ccxcompany.co/health/deep { "status": "ok" | "fail", // fail = HTTP 503 "uptimeSec": …, "checks": { "database": { "status": …, "latencyMs": … }, "cache": { "status": …, "latencyMs": … }, "workers": { "status": …, "latencyMs": … }, "apiRoutes": { "status": …, "latencyMs": … }, "smsProvider": { "status": …, "latencyMs": … } }}
What the platform is made of.
When something fails, it's almost always one of these pieces. Knowing which one helps tell whether the problem is ours or whoever delivers the message. Pick one to see what it depends on.
Data, replicas and backups stay in São Paulo, Brazil. Delivery through Meta, AI inference, push (Apple and Google) and the Cloudflare network leave the country.
Monitor it on your own clock.
This endpoint answers without authentication and was built for your synthetic monitor to check every minute. Read the response body, not just the HTTP code.
{ "status": "fail", "uptimeSec": …, "checks": { // at least one of the next four is "fail" "database": { "status": …, "latencyMs": … }, "cache": { "status": …, "latencyMs": … }, "workers": { "status": …, "latencyMs": … }, "apiRoutes": { "status": …, "latencyMs": … }, "smsProvider": { "status": …, "latencyMs": … } }}
{ "status": "ok", "uptimeSec": …, "checks": { "database": { "status": "ok", "latencyMs": … }, "cache": { "status": "ok", "latencyMs": … }, "workers": { "status": "ok", "latencyMs": … }, "apiRoutes": { "status": "ok", "latencyMs": … }, "smsProvider": { "status": "fail", "latencyMs": … } }}
{ "status": "ok", "uptimeSec": …, "checks": { "database": { "status": "ok", "latencyMs": … }, "cache": { "status": "ok", "latencyMs": … }, "workers": { "status": "ok", "latencyMs": … }, "apiRoutes": { "status": "ok", "latencyMs": … }, "smsProvider": { "status": "ok", "latencyMs": … } }}
An example body for this reading, not a live one. The SMS provider probe is cached for 30 seconds and never sends a message. A field marked skipped means that dependency isn't configured, not that it failed.
If something stops, talk to us.
There are no automatic incident emails yet. WhatsApp is the fastest path; email is for logging the problem in detail.
What helps us find the problem fast
When it happened
Approximate date and time, with time zone.
The message or campaign id
The id the API returned (msg_…) or the campaign name in the dashboard.
The error you got
The HTTP code and the code field in the response, such as CONFLICT or RATE_LIMITED.
Channel and number
Which channel, which sending number and, if you can, a sample destination.
Why is there no availability figure here?
Because the external monitor that would measure availability and keep its history isn't published yet. We'd rather show nothing than a number nobody can check. When it's live, availability and incidents will show up on this page.
What does /health/deep check?
The database, the cache, the workers and the API routes, which together decide between 200 and 503, plus the SMS provider, which is reported apart so an SMS outage doesn't mark WhatsApp, email and the dashboard as down.
How often can my monitor call it?
It was built for a synthetic monitor that checks every minute, without authentication. The SMS provider probe is cached for 30 seconds and never sends a message.
Will you email me when something breaks?
Not yet: there are no automatic incident emails. Message us on WhatsApp, the fastest path, or email us to log the problem in detail.
Where does my data live?
Data, replicas and backups stay in São Paulo, Brazil. Delivery through Meta, AI inference, push through Apple and Google, and the Cloudflare network leave the country.
Want to see the platform before you integrate?
Sign up through the site and get a US$5 test credit.