The honest position
erp.io is a suite of separately deployed applications, and API coverage reflects that: some modules expose a usable API, some expose a couple of endpoints built for one specific integration, and some expose nothing. There is no single unified API across the suite, and there is no published OpenAPI specification covering everything.
That is worth stating plainly at the top rather than discovering after building against an assumption. If an integration matters to your decision, ask about that specific module before committing to it.
| Area | State |
|---|---|
| Authentication with API keys | Available |
| Module hand-off tokens | Available |
| Accounting API | Available |
| CRM lead ingest | Available |
| Other module APIs | Partial |
| Outbound webhooks | Partial |
| Published OpenAPI spec | None |
| Client libraries | None |
Creating, using and revoking organisation-scoped API keys.
Module tokensAvailableHow the suite signs somebody into a module, and what is verified.
WebhooksIn progressInbound ingest endpoints and the limited outbound events.
Rate limitsAvailableWhat is limited, what happens when you exceed it.
What most integrations actually need
In practice the integrations people build fall into three shapes, and two of them are well served.
- Getting leads in. A form on your own site posting to the CRM ingest endpoint. Well supported — see Webhooks.
- Getting data out for reporting. Reading ledger data into a warehouse with an API key. Supported for Accounting.
- Two-way sync with another system. Poorly supported. Without outbound webhooks across the suite, this means polling, and polling a system with no change feed is unpleasant.
Bulk loading historic data is a one-off job with different constraints, and it usually runs through the API. See Migrate.
In this section
Creating and using organisation-scoped API keys in erp.io, how they are stored, and how to handle a leaver who knew one.
Module tokensAvailableThe signed token that signs somebody into an erp.io module without a second login: what it carries, what is verified, and why it cannot be reused.
WebhooksIn progressInbound ingest endpoints in erp.io — lead capture and activity — the limited outbound events, and the URL mistake that silently loses leads.
Rate limitsAvailableWhat is rate limited in erp.io, what happens when a limit is reached, and how to build an integration that does not hit one.
What this does not do
Each module exposes its own, or none.
Nothing to generate a client from.
No official libraries in any language.
You develop against a real organisation.
Ask before depending on an endpoint that is not documented here.
Questions
Is there a Zapier or Make integration?
No official one.
Can we get an API for a module that has none?
Ask. It is a build decision, not a switch.
Do you publish changelogs for API changes?
Not per endpoint. Ask before depending on an undocumented one.