What you can automate
The three ways to connect Eel to your systems, and what each one can do.
This section is for anyone who wants Eel to talk to something else: a website, an ERP, a nightly script, an assistant. If you are looking for how to use the apps themselves, those are the user guides.
Three ways in
| Way | What it is | When you want it |
|---|---|---|
| API key | A workspace credential, with no person behind it | A script, a site, an integration that runs on its own |
| Connected app | A token that acts as a person, authorized by them | A tool working on somebody's behalf that sees what they see |
| MCP | An endpoint that lets an assistant use your data | Connecting Claude or another compatible client |
All three use the same header and the same error format. The difference is what they can see, not how they identify themselves.
What is available
Each app publishes its own API under /api/public/v1:
| App | Base | What it covers |
|---|---|---|
| Wrap | https://wrap.eel.software |
Contacts, companies, conversations, deals, notes, reminders and nine reports |
| Swarm | https://swarm.eel.software |
Tasks, checklists, comments, projects, channels, messages, people and activity |
| Nest | https://nest.eel.software |
The workspace, its people and notifications. Three reads and nothing else |
| Flow | https://flow.eel.software |
Catalogue, stock, partners, sales, invoices, payments, receivables and webhooks |
Plus one MCP endpoint for all of them: https://api.eel.software/mcp.
The endpoint-by-endpoint reference in this section covers all five apps, with what each endpoint returns and the scope it asks for.
What this API does not do
Worth knowing before you design anything on top of it.
- Delete and archive are the exception, not the rule. The rest of the surface is create, read and update. In Swarm you can archive a task or cancel a calendar event. In Flow you can delete a webhook subscription.
- It is not callable from a browser. It answers no preflight and sends no CORS headers: this is server to server. The one exception is Zap's delivery API, which exists precisely to be consumed by a website.
- It does not translate. It returns ids, enums and text exactly as stored, never localized labels. If the API said "Ganado" in one workspace and "Won" in another, your code would have to guess the language before comparing.
Where to start
- Authentication: how a request is signed.
- Shared rules: pagination, idempotency, errors and pace.
- Your first request: a
curlthat works.