test.ai Users API

The Users API from test.ai — 7 operation(s) for users.

Operations 9

POST /users Create a new user #
POST /users/login Log in and retrieve an access token #
POST /users/resend_confirmation_email Re-send the confirmation e-mail to the address associated with the logged in… #
GET /users/confirm_email/{token} Confirm an e-mail address #
GET /users/{id} Get details of a user #
POST /users/{id} Update details for a user #
GET /users/{id}/avatar Get avatar image data (this API is only available in the development version of… #
POST /users/{id}/avatar Upload image data to be used as the user avatar #
POST /users/{id}/promote Promote a user to an admin (admin authorization required) #

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/test-ai-users-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

test-ai-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: OpenTestData Users API
  license:
    name: MIT
tags:
- name: Users
paths:
  /users:
    post:
      summary: Create a new user
      operationId: api.handlers.users.signup
      requestBody:
        $ref: '#/components/requestBodies/Users_SignUp'
      responses:
        '200':
          $ref: '#/components/responses/Users_SignUpSuccess'
        '500':
          $ref: '#/components/responses/Users_SignUpError'
      tags:
      - Users
  /users/login:
    post:
      summary: Log in and retrieve an access token
      operationId: api.handlers.auth.login
      requestBody:
        $ref: '#/components/requestBodies/Users_Login'
      responses:
        '200':
          $ref: '#/components/responses/Users_LoginSuccess'
        '500':
          $ref: '#/components/responses/Base_Error'
      tags:
      - Users
  /users/resend_confirmation_email:
    post:
      summary: Re-send the confirmation e-mail to the address associated with the logged in…
      operationId: api.handlers.users.resend_confirmation
      requestBody:
        $ref: '#/components/requestBodies/Users_EmailResend'
      responses:
        '200':
          $ref: '#/components/responses/Users_EmailResendSuccess'
        '500':
          $ref: '#/components/responses/Base_Error'
      security:
      - jwt: []
      tags:
      - Users
  /users/confirm_email/{token}:
    get:
      summary: Confirm an e-mail address
      operationId: api.handlers.users.confirm_email
      parameters:
      - in: path
        name: token
        required: true
        schema:
          type: string
        description: The e-mail confirmation token
      responses:
        '200':
          $ref: '#/components/responses/Users_EmailConfirmSuccess'
        '500':
          $ref: '#/components/responses/Base_Error'
      tags:
      - Users
  /users/{id}:
    get:
      summary: Get details of a user
      operationId: api.handlers.users.detail
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: integer
          minimum: 1
        description: The user ID
      responses:
        '200':
          $ref: '#/components/responses/Users_GetUserSuccess'
        '500':
          $ref: '#/components/responses/Base_Error'
      security:
      - jwt: []
      tags:
      - Users
    post:
      summary: Update details for a user
      operationId: api.handlers.users.update
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: integer
          minimum: 1
        description: The user ID
      requestBody:
        $ref: '#/components/requestBodies/Users_UpdateUser'
      responses:
        '200':
          $ref: '#/components/responses/Users_UserDetails'
        '500':
          $ref: '#/components/responses/Base_Error'
      security:
      - jwt: []
      tags:
      - Users
  /users/{id}/avatar:
    get:
      summary: Get avatar image data (this API is only available in the development version of…
      operationId: api.handlers.users.get_avatar
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: integer
          minimum: 1
        description: The user ID
      responses:
        '200':
          $ref: '#/components/responses/Users_Avatar'
        '500':
          $ref: '#/components/responses/Base_Error'
      tags:
      - Users
    post:
      summary: Upload image data to be used as the user avatar
      operationId: api.handlers.users.upload_avatar
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: integer
          minimum: 1
        description: The user ID
      requestBody:
        $ref: '#/components/requestBodies/Users_UpdateAvatar'
      responses:
        '200':
          $ref: '#/components/responses/Users_UpdateAvatar'
        '500':
          $ref: '#/components/responses/Base_Error'
      security:
      - jwt: []
      tags:
      - Users
  /users/{id}/promote:
    post:
      summary: Promote a user to an admin (admin authorization required)
      operationId: api.handlers.users.promote
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: integer
          minimum: 1
        description: The user ID
      responses:
        '200':
          $ref: '#/components/responses/Users_UserDetails'
        '500':
          $ref: '#/components/responses/Base_Error'
      security:
      - jwt: []
      tags:
      - Users
components:
  schemas:
    Users_UpdateUser:
      properties:
        email:
          type: string
          maxLength: 120
          minLength: 5
        password:
          type: string
          minLength: 8
      additionalProperties: false
    Data_Datum:
      allOf:
      - $ref: '#/components/schemas/Data_DatumBase'
      - $ref: '#/components/schemas/Base_Base'
      - properties:
          user_id:
            type: integer
    Users_EmailResend:
      properties:
        email_confirmation_url:
          type: string
      required:
      - email_confirmation_url
      additionalProperties: false
    Base_Base:
      properties:
        id:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Users_SignUp:
      properties:
        username:
          type: string
          maxLength: 80
          minLength: 1
        email:
          type: string
          maxLength: 120
          minLength: 5
        password:
          type: string
          minLength: 8
        bio:
          type: string
          maxLength: 240
        email_confirmation_url:
          type: string
      required:
      - username
      - email
      - password
      - bio
      - email_confirmation_url
      additionalProperties: false
    Users_Login:
      properties:
        username:
          type: string
        password:
          type: string
      required:
      - username
      - password
      additionalProperties: false
    Data_DatumBase:
      properties:
        name:
          type: string
          maxLength: 100
          minLength: 1
        type:
          type: string
          enum:
          - 'NULL'
          - BOOL
          - NUM
          - STR
          - OBJ
        value:
          type: string
          maxLength: 1024
      required:
      - name
      - type
      - value
      additionalProperties: false
    Users_User:
      allOf:
      - $ref: '#/components/schemas/Base_Base'
      - properties:
          username:
            type: string
            maxLength: 80
            minLength: 1
          avatar_url:
            type: string
          bio:
            type: string
          data:
            type: array
            items:
              $ref: '#/components/schemas/Data_Datum'
  responses:
    Users_EmailResendSuccess:
      description: Successful resend
      content:
        application/json:
          schema:
            properties:
              success:
                type: boolean
    Users_SignUpError:
      description: New User Error
      content:
        application/json:
          schema:
            type: object
            properties:
              username:
                type: string
              email:
                type: string
              error:
                type: string
    Users_Avatar:
      description: The raw avatar image data
      content:
        image/jpeg:
          schema:
            type: string
            format: binary
    Users_UpdateAvatar:
      description: The URL for the newly-uploaded image
      content:
        application/json:
          schema:
            type: string
    Users_EmailConfirmSuccess:
      description: Auth token
      content:
        application/json:
          schema:
            properties:
              confirmed:
                type: boolean
    Base_Error:
      description: Error
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
    Users_LoginSuccess:
      description: Auth token
      content:
        application/json:
          schema:
            properties:
              token:
                type: string
              user_id:
                type: integer
    Users_SignUpSuccess:
      description: New User
      content:
        application/json:
          schema:
            type: object
            $ref: '#/components/schemas/Users_User'
    Users_UserDetails:
      description: User details
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_User'
    Users_GetUserSuccess:
      description: User details
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_User'
  requestBodies:
    Users_UpdateAvatar:
      description: Image mime type and data
      required: true
      content:
        application/json:
          schema:
            properties:
              type:
                type: string
              data:
                type: string
    Users_Login:
      description: Login details
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_Login'
    Users_SignUp:
      description: Data needed to create a new User
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_SignUp'
    Users_UpdateUser:
      description: User details
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_UpdateUser'
    Users_EmailResend:
      description: Confirmation url to include in the confirmation e-mail
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Users_EmailResend'
  securitySchemes:
    jwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      x-bearerInfoFunc: api.handlers.auth.check_token