Qoala Authentication API

Session management for the Qoala for Enterprise platform — create an authentication session from an email and security code, and refresh it with a refresh token. Returns a JWT access token, a refresh token and the full authenticated user, role and organization profile.

Operations 2

POST /v2/sessions Create Session #
POST /v2/sessions/refresh Refresh Session #

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/qoala-authentication-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

qoala-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Authentication API
  version: v1.3
  description: '# Introduction


    Welcome to the Qoala Authentication API!'
servers:
- url: https://api-staging.qoala.app
- url: https://api.uat.qoala.app
- url: https://api.qoala.app
tags:
- name: Authentication
  description: Authentication and session management endpoints
paths:
  /v2/sessions:
    post:
      tags:
      - Authentication
      summary: Create Session
      description: Create a new authentication session using email and security code
      operationId: createSession
      parameters:
      - in: header
        name: priority
        required: true
        schema:
          type: string
        description: Request priority header
      - in: header
        name: x-captcha-token
        required: true
        schema:
          type: string
        description: Captcha token for security verification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - email
              - securityCode
              properties:
                email:
                  type: string
                  format: email
                  description: User email address
                  example: user@example.com
                securityCode:
                  type: string
                  description: Security code sent to user's email
                  example: '123456'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
  /v2/sessions/refresh:
    post:
      tags:
      - Authentication
      summary: Refresh Session
      description: Refresh an existing authentication session using a refresh token
      operationId: refreshSession
      parameters:
      - in: header
        name: priority
        required: true
        schema:
          type: string
        description: Request priority header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - refresh
              properties:
                refresh:
                  type: string
                  description: Refresh token obtained from previous session
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
components:
  schemas:
    Organization:
      type: object
      required:
      - id
      - name
      - code
      - codeAlias
      - country
      - description
      - type
      - logo
      - logoSmall
      - config
      - contact
      - address
      - partnerId
      - alternative
      - bu
      - colorTheme
      - deletedAt
      - sectionLevelId
      - apiKey
      - partner
      - productCategories
      - industries
      - relations
      - bank
      properties:
        id:
          type: string
          description: Organization ID
        name:
          type: string
          description: Organization name
        code:
          type: string
          description: Organization code
        codeAlias:
          type: string
          description: Organization code alias
        country:
          type: string
          description: Organization country
        description:
          type: string
          description: Organization description
        type:
          type: string
          description: Organization type
        logo:
          type: string
          description: Organization logo URL
        logoSmall:
          type: string
          description: Organization small logo URL
        address:
          type: string
          description: Organization address
        alternative:
          type: string
          description: Alternative name
        bu:
          type: string
          description: Business unit
        partnerId:
          type: string
          nullable: true
          description: Partner ID
        deletedAt:
          type: string
          nullable: true
          format: date-time
          description: Deletion timestamp
        sectionLevelId:
          type: string
          nullable: true
          description: Section level ID
        bank:
          type: string
          nullable: true
          description: Bank information
        config:
          $ref: '#/components/schemas/OrganizationConfig'
        colorTheme:
          $ref: '#/components/schemas/ColorTheme'
        contact:
          $ref: '#/components/schemas/Contact'
        apiKey:
          $ref: '#/components/schemas/ApiKey'
        partner:
          $ref: '#/components/schemas/Partner'
        productCategories:
          type: array
          items:
            $ref: '#/components/schemas/ProductCategory'
        industries:
          type: array
          items:
            type: string
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
    Relation:
      type: object
      required:
      - id
      - name
      - code
      - codeAlias
      - type
      - partnerId
      - products
      properties:
        id:
          type: string
          description: Relation ID
        name:
          type: string
          description: Relation name
        code:
          type: string
          description: Relation code
        codeAlias:
          type: string
          description: Relation code alias
        type:
          type: string
          description: Relation type
        partnerId:
          type: string
          nullable: true
          description: Partner ID
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
    Product:
      type: object
      required:
      - id
      - slug
      - name
      - description
      - industry
      - icon
      - isDraft
      - config
      properties:
        id:
          type: string
          description: Product ID
        slug:
          type: string
          description: Product slug
        name:
          type: string
          description: Product name
        description:
          type: string
          nullable: true
          description: Product description
        industry:
          type: string
          description: Industry
        icon:
          type: string
          description: Icon URL
        isDraft:
          type: integer
          description: Draft status
        config:
          type: object
          nullable: true
          description: Product configuration
    ProductCategory:
      type: object
      required:
      - id
      - slug
      - name
      - description
      - industry
      - icon
      - isDraft
      properties:
        id:
          type: string
          description: Product category ID
        slug:
          type: string
          description: Product category slug
        name:
          type: string
          description: Product category name
        description:
          type: string
          nullable: true
          description: Product category description
        industry:
          type: string
          description: Industry
        icon:
          type: string
          description: Icon URL
        isDraft:
          type: integer
          description: Draft status
    ColorTheme:
      type: object
      required:
      - primary
      - secondary
      properties:
        primary:
          type: string
          description: Primary color
        secondary:
          type: string
          description: Secondary color
    Partner:
      type: object
      required:
      - id
      - type
      - name
      - alias
      properties:
        id:
          type: string
          nullable: true
          description: Partner ID
        type:
          type: string
          description: Partner type
        name:
          type: string
          description: Partner name
        alias:
          type: string
          description: Partner alias
    RoleDetail:
      type: object
      required:
      - id
      - name
      - rank
      - description
      - isLock
      properties:
        id:
          type: string
          description: Role ID
        name:
          type: string
          description: Role name
        rank:
          type: integer
          description: Role rank/priority
        description:
          type: string
          description: Role description
        isLock:
          type: integer
          description: Whether role is locked (1 = locked, 0 = unlocked)
    OrganizationConfig:
      type: object
      required:
      - hasLevel
      - loginMethods
      - hasAgent
      - hasCommission
      properties:
        hasLevel:
          type: boolean
          description: Whether organization has level structure
        hasAgent:
          type: boolean
          description: Whether organization has agents
        hasCommission:
          type: boolean
          description: Whether organization has commission structure
        loginMethods:
          type: array
          items:
            type: string
          description: Available login methods
    ContactPerson:
      type: object
      required:
      - name
      - phoneNumber
      - email
      properties:
        name:
          type: string
          description: Contact person name
        phoneNumber:
          type: string
          description: Contact person phone number
        email:
          type: string
          format: email
          description: Contact person email
    Contact:
      type: object
      required:
      - mainPic
      - reconPic
      properties:
        mainPic:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
        reconPic:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
    SessionResponse:
      type: object
      required:
      - camel
      - data
      - status
      - message
      properties:
        camel:
          type: boolean
          description: Indicates if response keys are in camelCase
        status:
          type: string
          example: success
          description: Response status
        message:
          type: string
          example: Session created successfully
          description: Response message
        data:
          type: object
          required:
          - user
          - token
          - refresh
          properties:
            token:
              type: string
              description: JWT access token
            refresh:
              type: string
              description: JWT refresh token
            user:
              $ref: '#/components/schemas/User'
    User:
      type: object
      required:
      - id
      - uuid
      - firstName
      - lastName
      - fullName
      - gender
      - lang
      - nationality
      - email
      - phoneNumber
      - isActive
      - locked
      - isIdentityVerified
      - isBankVerified
      - isEmailVerified
      - isPhoneVerified
      - createdAt
      - organization
      - role
      - roleDetail
      - bankAccount
      - groups
      - permissions
      - profileImage
      - lastLogin
      - externalId
      - totp
      properties:
        id:
          type: integer
          description: User ID
        uuid:
          type: string
          format: uuid
          description: User UUID
        firstName:
          type: string
          description: User's first name
        lastName:
          type: string
          description: User's last name
        fullName:
          type: string
          description: User's full name
        gender:
          type: string
          nullable: true
          description: User's gender
        lang:
          type: string
          description: User's preferred language
        nationality:
          type: string
          nullable: true
          description: User's nationality
        email:
          type: string
          format: email
          description: User's email address
        phoneNumber:
          type: string
          description: User's phone number
        isActive:
          type: integer
          description: Whether user is active (1 = active, 0 = inactive)
        locked:
          type: integer
          description: Whether user is locked (1 = locked, 0 = unlocked)
        isIdentityVerified:
          type: string
          description: Identity verification status
        isBankVerified:
          type: string
          description: Bank verification status
        isEmailVerified:
          type: string
          description: Email verification status
        isPhoneVerified:
          type: string
          description: Phone verification status
        createdAt:
          type: string
          format: date-time
          description: Account creation timestamp
        lastLogin:
          type: string
          format: date-time
          description: Last login timestamp
        role:
          type: string
          description: User's role
        roleDetail:
          $ref: '#/components/schemas/RoleDetail'
        organization:
          $ref: '#/components/schemas/Organization'
        bankAccount:
          type: object
          description: User's bank account information
        groups:
          type: array
          items:
            type: string
          description: User's groups
        permissions:
          type: array
          items:
            type: string
          description: User's permissions
        profileImage:
          type: string
          nullable: true
          description: URL to user's profile image
        externalId:
          type: string
          nullable: true
          description: External ID reference
        totp:
          type: integer
          description: TOTP status (1 = enabled, 0 = disabled)
    ApiKey:
      type: object
      required:
      - key
      - secret
      - isActive
      - createdAt
      - updatedAt
      - plainSecret
      - createdBy
      properties:
        key:
          type: string
          nullable: true
          description: API key
        secret:
          type: string
          description: API secret (hashed)
        plainSecret:
          type: string
          description: API secret (plain text)
        isActive:
          type: integer
          description: Whether API key is active
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp
        createdBy:
          type: string
          description: Creator user ID