Keboola Auth API

Authentication, account confirmation and MFA.

Operations 12

POST /auth/signup Create account
POST /auth/confirm/{email}/{code} Confirm account
GET /auth/confirm/{email}/{code} Confirm account (browser)
POST /auth/confirm Resend confirmation code
POST /auth/login Login
POST /auth/logout Logout
GET /auth/token Refresh token
GET /auth/profile Get user profile
POST /auth/forgot/{email} Reset password
POST /auth/forgot/{email}/confirm Forgot password confirmation
POST /auth/mfa Enable Software MFA
POST /auth/mfa/confirm Confirm Software MFA

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.
All 92 tools →

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

keboola-auth-api-openapi.yml Raw ↑
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.

        '