ERPNext Naive Authentication API
If you are developing something serious, you may want to use oAuth2.
If you are developing something serious, you may want to use oAuth2.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/erpnext-naive-authentication-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Unofficial documentation of the Frappe / ERPNext API.
version: 0.0.1
title: Frappe / ERPNext Naive Authentication API
contact:
name: Raffael Meyer
url: https://alyf.de
email: raffael@alyf.de
license:
name: GPL-3.0
servers:
- url: https://demo.erpnext.com/api
description: Demo server
- url: https://{company}.erpnext.com/api
description: Custom ERPNext.com instance
variables:
company:
default: demo
description: Subdomain of your company's custom ERPNext instance
tags:
- name: Naive Authentication
description: If you are developing something serious, you may want to use oAuth2.
paths:
/method/login:
post:
tags:
- Naive Authentication
summary: Authenticate yourself
operationId: login
parameters:
- in: query
name: usr
schema:
type: string
example: Administrator
required: false
description: Your username
- in: query
name: pwd
schema:
type: string
example: admin
required: false
description: Your password
requestBody:
content:
application/json:
schema:
type: object
properties:
usr:
type: string
example: Administrator
pwd:
type: string
example: admin
application/x-www-form-urlencoded:
schema:
type: object
properties:
data:
type: object
responses:
'200':
description: Login successful
content:
application/json:
schema:
type: object
properties:
full_name:
type: string
example: Administrator
message:
type: string
example: Logged in
home_page:
type: string
example: /desk
'401':
description: oneOf(Incomplete login details, Incorrect password, User disabled or missing)
content:
application/json:
schema:
type: object
properties:
exc:
type: string
example: Traceback (most recent call last) ...
message:
type: string
example: Incorrect password
text/html:
schema:
type: string
/method/logout:
get:
tags:
- Naive Authentication
summary: Logout from current session
responses:
'200':
description: Logged out.
content:
application/json:
schema:
type: object
operationId: getMethodLogout
x-operation-id-source: derived
/method/frappe.auth.get_logged_user:
get:
tags:
- Naive Authentication
summary: Get the user that is logged in
operationId: authGetLoggedUser
description: Get the currently logged in user
responses:
'200':
description: search results matching criteria
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: demo@erpnext.com
'401':
description: Not permitted
content:
application/json:
schema:
type: object
properties:
exc:
type: string
example: Traceback (most recent call last) ...
_server_messages:
type: string
example: '[{"message": "Not permitted"}]'
text/html:
schema:
type: string
components:
securitySchemes:
tokenAuth:
type: apiKey
in: header
name: Authorization
description: 'Get your API keys at User -> Api Access -> Generate Keys.
"headers = {''Authorization'': ''token <api_key>:<api_secret>''}"
'
basicAuth:
type: http
description: 'Get your API keys at User -> Api Access -> Generate Keys.
username = api_key; password = api_secret
[More info](https://frappe.io/docs/user/en/guides/integration/token_based_auth)
'
scheme: basic
oAuth2:
type: oauth2
description: "This API uses OAuth 2 with the authorization code flow. \n[More info]https://frappe.io/docs/user/en/guides/integration/using_oauth)\n"
flows:
authorizationCode:
authorizationUrl: /method/frappe.integrations.oauth2.authorize
tokenUrl: /method/frappe.integrations.oauth2.get_token
refreshUrl: /method/frappe.integrations.oauth2.get_token
scopes:
all: Same permissions as the user who created the oAuth client