EzyConn Developer Docs, API & SDKs
Everything you need to embed EzyConn, script the widget, and talk to the API from your own backend.
EzyConn is built to be extended. The Web SDK gets a working chat widget on your site in a couple of minutes, and the REST API and webhooks let you wire conversations into the rest of your stack: your CRM, your data warehouse, your on-call tooling. Below is the fast path: install the widget, make your first authenticated API call, then subscribe to the events you care about.
Web SDK
Drop the chat widget onto any site with a single script tag, then style and script it to match your brand.
REST API
Create conversations, sync contacts, and pull transcripts from your own backend over a predictable JSON API.
Webhooks
Subscribe to events like new messages and resolved conversations, and react to them in real time.
Mobile SDKs
Native iOS and Android SDKs so your app users get the same conversation history they have on the web.
Authentication
Every request is authenticated with a workspace API key sent as a bearer token over HTTPS.
Rate Limits
Generous per-workspace limits with clear headers so you always know how much room you have left.
Quick start: the Web SDK
Paste this snippet just before the closing </body> tag on every page you want the widget to appear. Swap YOUR_WORKSPACE_ID for the ID in Settings → Install. That's the whole install, with no build step and no npm package required.
<script>
(function (w, d) {
w.ezyconn = w.ezyconn || function () {
(w.ezyconn.q = w.ezyconn.q || []).push(arguments)
}
var s = d.createElement('script')
s.async = true
s.src = 'https://cdn.ezyconn.com/widget.js'
s.setAttribute('data-workspace', 'YOUR_WORKSPACE_ID')
d.head.appendChild(s)
})(window, document)
</script>Once it loads you can open the widget, pass in a signed-in user, or fire custom events from your own code:
// Identify the logged-in visitor so conversations stay attached to them
ezyconn('identify', { id: 'user_123', name: 'Priya', email: 'priya@acme.com' })
// Open the widget from your own button
ezyconn('open')
// Track a custom event to trigger a proactive message
ezyconn('track', 'viewed_pricing', { plan: 'pro' })REST API
The API is organized around REST. It has predictable, resource-oriented URLs, accepts JSON request bodies, returns JSON responses, and uses standard HTTP status codes and verbs. If you've used Stripe or any modern API before, this will feel familiar.
Base URL
Here's a complete request that starts a conversation on behalf of a contact:
curl https://api.ezyconn.com/v1/conversations \
-H "Authorization: Bearer $EZYCONN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contact": { "email": "priya@acme.com", "name": "Priya" },
"message": { "body": "Hi! I have a question about billing." }
}'Conversations
Start, read, assign, and resolve threads.
Messages
Post replies and notes, or fetch a full transcript.
Contacts
Create and update the people you talk to, with custom attributes.
Events
Send behavioural events that drive automations and routing.
Authentication
Authenticate every request with a workspace API key, generated under Settings → API keys. Send it as a bearer token in the Authorization header, always over HTTPS. Keys are scoped to a single workspace, can be rotated at any time, and should live in a server-side secret store, never in client-side code or a public repository.
Webhooks
Rather than polling, subscribe to the events you care about and EzyConn will POST them to your endpoint as they happen: conversation.created, message.created, conversation.resolved, and more. Every payload is signed, so you can verify it really came from us before you act on it. Use them to sync tickets to your help desk, alert an on-call engineer, or push transcripts into your warehouse.
Mobile SDKs & client libraries
Native SDKs for iOS and Android bring the full conversation experience, including history and push notifications, into your app. For the API, official client libraries for Node.js, Python, and Ruby handle auth, retries, and pagination so you can skip the boilerplate. Everything is open source and on GitHub.
Rate limits
The API allows a generous number of requests per minute per workspace, enough for real-time sync without a second thought. Every response includes X-RateLimit-Remaining and X-RateLimit-Reset headers so you can back off gracefully. If you expect a large bulk import, tell us first and we'll lift the ceiling for you.
Stuck on something?
Read the code on GitHub, ask the community, or talk to a human on our team, whatever gets you unblocked fastest.
Building the business case too? The free plan includes 2 seats and 100 AI conversations a month. See pricing or book a demo.