PeopleTide CRM

API reference

Supported public endpoints.

Reference the external integration endpoints that are intended for API-key or registered-form use. Internal workspace routes are not part of this contract.

Updated 13 September 2026 · 12 min read

Service

Health check

GET/api/v1/public/health

Confirm that the public API is responding.

Response
200 { ok, service, timestamp }

Lead capture

Create or consolidate a lead

POST/api/v1/public/leads

Create 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

POST/api/v1/public/form-submission

Accept 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

POST/api/v1/public/web-forms/{publicKey}/submissions

Accept 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

GET/api/v1/public/pbx-config

Return 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

POST/api/v1/crm/calls/webhook/asterisk

Create 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.