Service
Health check
/api/v1/public/healthConfirm that the public API is responding.
- Response
200 { ok, service, timestamp }
Lead capture
Create or consolidate a lead
/api/v1/public/leadsCreate a lead in the API key’s workspace.
- Required scope
leads:create- Request
{ title?, email?, phone?, source?, notes?, content? }- Response
201 { success, leadId, isConsolidated, message }
- Authorization: Bearer or X-API-Key is required.
- At least one useful contact or enquiry field should be supplied even though every individual field is optional.
Registered forms
Submit a form from a server
/api/v1/public/form-submissionAccept a JSON payload for a registered form.
- Required scope
leads:create- Request
Headers: X-PeopleTide-Form-Id; optional Idempotency-Key. Body: any JSON object up to 64 KiB.- Response
202 { accepted, submissionId }
Registered forms
Submit a form from a browser
/api/v1/public/web-forms/{publicKey}/submissionsAccept a verified browser submission without exposing an API key.
- Request
Headers: Origin, UUID Idempotency-Key, X-Turnstile-Token. Body: any JSON object up to 64 KiB.- Response
202 { accepted, submissionId }
- The exact Origin must be allowlisted on the registered form.
- The form must be active with browser ingress and Turnstile configured.
Calling
Read PBX integration configuration
/api/v1/public/pbx-configReturn workspace identity, canonical webhook URL, and delivery settings.
- Required scope
calls:create- Response
200 { tenant, webhooks, authentication, settings, version, timestamp }
Calling
Submit an Asterisk call event
/api/v1/crm/calls/webhook/asteriskCreate or update a call from a PBX lifecycle event.
- Required scope
calls:create- Request
{ event, timestamp, asteriskId, from, to, direction, startTime, ...optional timing and call metadata }- Response
2xx call event result
- event: call.started, call.ringing, call.answered, call.completed, call.missed, or voicemail.received.
- direction: inbound or outbound.
- Use one asteriskId across the complete lifecycle.
Errors
Common response statuses
- 400 — invalid JSON, field validation, or missing required headers.
- 401 — missing, invalid, disabled, expired, or inactive-workspace API key.
- 403 — insufficient scope, rejected form origin, or failed bot verification.
- 404 / 410 — form or resource does not exist, or has been archived or retired.
- 413 / 415 — payload too large or unsupported media type.
- 429 — rate limit exceeded; honor Retry-After.
- 5xx — temporary service or upstream failure.
