Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/keboola-auth-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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 Specification
openapi: 3.2.0
info:
title: Keboola Developer Portal Auth API
description: 'API for the Keboola Developer Portal — vendor, app (component) and user management for Keboola Connection. Most calls authenticate with a JWT token returned by `POST /auth/login`, passed verbatim in the `Authorization` header (valid for 1 hour; refresh with `GET /auth/token`).
'
version: 1.0.0
servers:
- url: https://apps-api.keboola.com
description: Production
security:
- bearerAuth: []
tags:
- name: Auth
description: Authentication, account confirmation and MFA.
paths:
/auth/signup:
post:
tags:
- Auth
summary: Create account
description: 'Anyone can create an account but must belong to a vendor to manage apps.
'
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
- email
- password
properties:
name:
type: string
email:
type: string
format: email
password:
type: string
description: 'At least 8 characters with one lowercase, one uppercase and one number; no whitespace.
'
example:
name: John Doe
email: john@keboola.com
password: superSecret1
responses:
'201':
description: Account created
/auth/confirm/{email}/{code}:
post:
tags:
- Auth
summary: Confirm account
description: 'Account needs to be confirmed by a code from the confirmation email sent to the user''s email address.
'
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
- name: code
in: path
required: true
schema:
type: string
responses:
'200':
description: Account confirmed
get:
tags:
- Auth
summary: Confirm account (browser)
description: 'Confirmation link from the email for browser-based confirmation flows; returns an HTML page.
'
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
- name: code
in: path
required: true
schema:
type: string
responses:
'200':
description: HTML confirmation page
content:
text/html:
schema:
type: string
/auth/confirm:
post:
tags:
- Auth
summary: Resend confirmation code
description: Resends the account confirmation email.
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
- password
properties:
email:
type: string
format: email
password:
type: string
example:
email: john@keboola.com
password: superSecret
responses:
'204':
description: Confirmation code resent
/auth/login:
post:
tags:
- Auth
summary: Login
description: 'Login returns three different tokens: `token` (auth, 1 hour), `accessToken` (MFA / logout, 1 hour), and `refreshToken` (30 days). If your account has active MFA, first call returns `session` which is used in a second call along with the MFA code.
'
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
password:
type: string
description: Use in the first step (before MFA).
session:
type: string
description: Use in the second step (MFA).
code:
type: string
description: MFA code, use in the second step.
challenge:
type: string
enum:
- SMS_MFA
- SOFTWARE_TOKEN_MFA
default: SMS_MFA
description: MFA challenge type, use in the second step.
examples:
password_login:
summary: Login with password
value:
email: john@keboola.com
password: superSecret
mfa_step2:
summary: Login with MFA code
value:
email: john@keboola.com
code: '123456'
session: '{session}'
responses:
'200':
description: Login successful
content:
application/json:
schema:
type: object
properties:
token:
type: string
accessToken:
type: string
refreshToken:
type: string
session:
type: string
expiresIn:
type: integer
/auth/logout:
post:
tags:
- Auth
summary: Logout
description: Invalidates all active access and refresh tokens.
responses:
'204':
description: Logged out
/auth/token:
get:
tags:
- Auth
summary: Refresh token
description: 'Returns fresh auth token and access token in exchange for refresh token received on login.
'
responses:
'200':
description: Token refreshed
content:
application/json:
schema:
type: object
properties:
token:
type: string
accessToken:
type: string
expiresIn:
type: integer
example:
token: '{your token}'
accessToken: '{your token}'
expiresIn: 3600
/auth/profile:
get:
tags:
- Auth
summary: Get user profile
description: 'Returns the current user''s profile. Note that `isMfaEnabled` is deprecated; use `mfa` instead. Property `mfa` can contain values `SOFTWARE_TOKEN_MFA`, `SMS_MFA` and `false`.
'
responses:
'200':
description: User profile
content:
application/json:
schema:
$ref: '#/components/schemas/User'
example:
email: john@keboola.com
name: John Doe
vendors:
- keboola
isAdmin: false
isMfaEnabled: true
mfa: SOFTWARE_TOKEN_MFA
/auth/forgot/{email}:
post:
tags:
- Auth
summary: Reset password
description: Sends email with confirmation code for password reset.
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
format: email
responses:
'204':
description: Password reset email sent
/auth/forgot/{email}/confirm:
post:
tags:
- Auth
summary: Forgot password confirmation
description: Confirms password reset using the code from the email.
security: []
parameters:
- name: email
in: path
required: true
schema:
type: string
format: email
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- password
- code
properties:
password:
type: string
code:
type: string
example:
code: your code from email
password: new password
responses:
'204':
description: Password reset confirmed
/auth/mfa:
post:
tags:
- Auth
summary: Enable Software MFA
description: 'Enable login using TOTP software token MFA. Returns secret code to enter into a TOTP-generating app such as Google Authenticator.
'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accessToken:
type: string
description: Access token from login call
example:
accessToken: xxxyyy
responses:
'200':
description: MFA secret code
content:
application/json:
schema:
type: object
properties:
secretCode:
type: string
example:
secretCode: xxx
/auth/mfa/confirm:
post:
tags:
- Auth
summary: Confirm Software MFA
description: Confirm multi-factor authentication using code from your TOTP app.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- accessToken
- code
properties:
accessToken:
type: string
description: Access token from login call
code:
type: string
description: Code from your TOTP app
example:
accessToken: xxxyyy
code: '123456'
responses:
'200':
description: MFA confirmed
components:
schemas:
User:
type: object
additionalProperties: true
properties:
name:
type: string
email:
type: string
format: email
vendors:
type: array
items:
type: string
isAdmin:
type: boolean
securitySchemes:
bearerAuth:
type: apiKey
in: header
name: Authorization
description: 'JWT token from `POST /auth/login`, passed verbatim (no "Bearer " prefix). Admin endpoints require a token belonging to an administrator.
'