ERPNext
BUSINESS · TASKS
Customers, items, orders, and invoices on the ERPNext site they connect.
Connecting ERPNext in practice
Every ERPNext is somebody else’s self-hosted Frappe site, so the base URL, the version and the permission model differ per tenant, and the api_key:api_secret pair is bound to one user whose roles are checked on every request. A list call returns 20 records and only the `name` field unless you ask for more, so the obvious "get all customers" call comes back as a page of ids.
Scopes that draw scrutiny
Authorization: token api_key:api_secretFrappe’s token auth. There are no scope tokens: the key inherits every role of the user it was generated for, and each request is logged against that user.Whitelisted remote methods (Frappe’s own term)Anything outside the REST resource endpoints is reachable only if a developer marked the method whitelisted, so the callable surface of a site depends on its installed apps rather than on the published API.
Worth knowing
- A POST to a remote method calls frappe.db.commit() automatically, so a half-finished multi-step write is already durable when the next call fails.
- Pagination is `limit_start` and `limit_page_length`, aliased to `limit` in v13, and the default page is 20 records with only the `name` field — `fields` has to be passed to get anything else.
- Three auth mechanisms coexist (token pair, OAuth bearer, and a cookie session from /api/method/login), and a tenant may have disabled the one your integration assumes.
- The REST API guide publishes no rate limit, so throughput is a property of the tenant’s own hosting rather than of the platform.
Checked against Frappe REST API (2026-09-29), Frappe REST API (markdown source) (2026-09-29)
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
Often connected alongside
Put ERPNext behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.