A contact-routing API built for real application workflows
Read and write contacts, manage lists and rules, consume events, and configure outbound webhooks through a project-scoped REST API.
Build with OpenContact · Read the API guide
Project-scoped by design
Every API key belongs to one project, so credentials for one product, brand, or client cannot access another. The public project identifier is separate from the internal database ID.
Grant only the capabilities an integration needs with scopes for contacts, lists, events, webhooks, and API-key management.
Safe contact upserts
Upsert contacts by normalized email and include an idempotency key when a request may be retried. A repeated request with the same key returns the first result without running the write, rules, or webhooks a second time.
Read incrementally
Filter and paginate contact reads, or request only contacts updated after the timestamp from your last successful poll. Event endpoints can also be filtered by type and time.
Test without touching providers
Create a sandbox key for integration testing. Sandbox writes are stored and can fire OpenContact events, but they do not sync to real providers or count against plan limits.
That makes it possible to test contact creation and webhook handling together before using production credentials.
OpenAPI and Laravel support
Use the published OpenAPI specification with Postman, Insomnia, or a code generator. A Laravel package and implementation guide cover contact capture and verified webhook receipt for Laravel applications.
Predictable errors and limits
Validation failures, missing abilities, and plan-limit responses use explicit HTTP status codes, so integrations can distinguish a bad payload from an authorization issue or quota condition.
Next steps
Explore outbound webhooks · View the OpenAPI specification · Read integration guides