Platform endpoints
Health checks and the endpoints UpVoiced’s own infrastructure and providers call (billing and email events, inbound email). Integrations never call these.
Set up the SDK client used in the examples
UpVoiced infrastructure or a signed provider request:
import { UpVoiced } from '@upvoiced/sdk';
const upvoiced = new UpVoiced();curl examples read $UPVOICED_API_KEY and $UPVOICED_WORKSPACE_IDfrom your shell. MCP examples are the tools/call request an MCP client sends to the MCP server with the same API key.
GET/health
liveness
Response 200: 1 fields
| Name | Type | Required |
|---|---|---|
ok | true | Yes |
curl 'https://api.upvoiced.com/health'const data = await upvoiced.get('/health');No MCP tool for this operation. The MCP server covers the everyday reads and writes.
GET/ready
readiness
Response 200: 1 fields
| Name | Type | Required |
|---|---|---|
ok | true | Yes |
Errors: 503, all in the standard error shape.
curl 'https://api.upvoiced.com/ready'const data = await upvoiced.get('/ready');No MCP tool for this operation. The MCP server covers the everyday reads and writes.
POST/webhooks/paddle
Paddle Billing notifications (Paddle-Signature HMAC, 5 min tolerance, idempotent)
Response 200: 2 fields
| Name | Type | Required |
|---|---|---|
ok | true | Yes |
replayed | boolean | Yes |
Errors: 400, 401, 413, 500, 503, all in the standard error shape.
curl -X POST 'https://api.upvoiced.com/webhooks/paddle'const data = await upvoiced.post('/webhooks/paddle');No MCP tool for this operation. The MCP server covers the everyday reads and writes.
POST/webhooks/resend
Resend delivery feedback (Svix signature, 5 min tolerance, replay-safe)
Response 200: 2 fields
| Name | Type | Required |
|---|---|---|
ok | true | Yes |
replayed | boolean | Yes |
Errors: 400, 401, 413, 500, 503, all in the standard error shape.
curl -X POST 'https://api.upvoiced.com/webhooks/resend'const data = await upvoiced.post('/webhooks/resend');No MCP tool for this operation. The MCP server covers the everyday reads and writes.
POST/v1/inbound
Inbound email from the Email Worker (HMAC-signed raw MIME, post-by-email, reply-by-email)
Response 200: 5 fields
| Name | Type | Required |
|---|---|---|
ok | true | Yes |
outcome | string | Yes |
replayed | boolean | Yes |
post_id | string | null | Yes |
comment_id | string | null | Yes |
Errors: 401, 404, 413, 415, 422, 500, 503, all in the standard error shape.
curl -X POST 'https://api.upvoiced.com/v1/inbound'const data = await upvoiced.post('/v1/inbound');No MCP tool for this operation. The MCP server covers the everyday reads and writes.