Contact-routing primitives for your application
Build contact capture, routing, list management, event consumption, and webhook delivery into your product without recreating provider connectors and suppression logic.
Read the API guide · View OpenAPI
A project-scoped REST API
Use /api/v1 endpoints to read and write contacts, manage lists and rules, consume events, configure webhook subscriptions, and issue additional API keys.
Keys belong to one project and carry only the abilities you grant: contact, list, event, webhook, or key management.
Safe writes and incremental reads
Upsert contacts by normalized email. Add an idempotency key when requests may retry so the same write does not run rules or webhooks twice.
Use updated_since to retrieve only contacts changed after the last successful poll, or subscribe to events and avoid polling entirely.
Sandbox the integration
Sandbox keys store test writes and emit events while preventing sync to real providers and excluding the writes from plan usage. Test your contact request and webhook receiver together before switching credentials.
Signed outbound events
Subscribe to contact creation and status events. Deliveries include a stable ID and an HMAC-SHA256 signature over the timestamp and raw body. Failed deliveries retry with exponential backoff.
MCP server
Connect an AI agent to https://app.opencontact.dev/mcp with an API key. Twelve tools manage contacts, lists, sync rules, webhook subscriptions and API keys, and read contact events. Every call needs the project ID and an ability on the key.
Start from a contract
Import the OpenAPI document into Postman or Insomnia, or generate a client for your preferred language. Laravel teams can use the package and step-by-step integration guide included with OpenContact.