pricklymails-com Account API

The authenticated user's own profile, email, password, and 2FA.

Operations 10

GET /api/users/me Returns the authenticated user's profile #
GET /api/users/me/2fa Returns whether two-factor authentication is enabled for the caller #
POST /api/users/me/2fa/disable Disables two-factor authentication #
POST /api/users/me/2fa/enable Starts two-factor authentication setup #
POST /api/users/me/2fa/verify-setup Activates two-factor authentication with a TOTP code from the authenticator app #
PATCH /api/users/me/locale Sets the language of the caller's transactional emails #
GET /api/users/{uuid} Returns a user's profile by public UUID #
DELETE /api/users/{uuid} Deletes a user account #
PATCH /api/users/{uuid}/email Requests an email address change #
PATCH /api/users/{uuid}/password Changes the user's password after verifying the current one #

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/pricklymails-com:pricklymails-com-account-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

pricklymails-com-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Pricklymails Com Account API
  version: 0.9.0
  contact:
    email: support@pricklymails.com
  license:
    name: Proprietary
  description: 'Operations tagged account across 2 of this provider''s published API definitions: pricklymails-com-openapi.json, pricklymails-com-openapi.yaml. Each path carries the servers of the definition it was published in.'
tags:
- name: Account
  description: The authenticated user's own profile, email, password, and 2FA.
paths:
  /api/users/me:
    get:
      tags:
      - Account
      summary: Returns the authenticated user's profile
      operationId: get_me
      responses:
        '200':
          description: The authenticated user's profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/me/2fa:
    get:
      tags:
      - Account
      summary: Returns whether two-factor authentication is enabled for the caller
      operationId: get_2fa_status
      responses:
        '200':
          description: Whether 2FA is enabled for the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TwoFactorStatusResponse'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/me/2fa/disable:
    post:
      tags:
      - Account
      summary: Disables two-factor authentication
      description: Requires the account password and a valid TOTP code or unused backup code.
      operationId: disable_2fa
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Disable2FARequest'
        required: true
      responses:
        '204':
          description: 2FA disabled.
        '400':
          description: Wrong password, invalid code, or 2FA not enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No user found for the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '429':
          description: Too many failed 2FA attempts; temporarily locked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/me/2fa/enable:
    post:
      tags:
      - Account
      summary: Starts two-factor authentication setup
      description: Returns a TOTP secret, its `otpauth://` URI, and backup codes. Setup completes with `POST /api/users/me/2fa/verify-setup`.
      operationId: enable_2fa
      responses:
        '200':
          description: TOTP secret, otpauth URI, and backup codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Enable2FAResponse'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '409':
          description: 2FA is already enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/me/2fa/verify-setup:
    post:
      tags:
      - Account
      summary: Activates two-factor authentication with a TOTP code from the authenticator app
      operationId: verify_2fa_setup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Verify2FASetupRequest'
        required: true
      responses:
        '204':
          description: 2FA activated.
        '400':
          description: No setup in progress, or the code is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '409':
          description: 2FA is already enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/me/locale:
    patch:
      tags:
      - Account
      summary: Sets the language of the caller's transactional emails
      description: The language is `"en"` or `"fr"`, and it also selects the language of the links inside those emails.
      operationId: change_locale
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeLocaleRequest'
        required: true
      responses:
        '204':
          description: Language stored.
        '400':
          description: Unsupported language (`change_locale.invalid_locale`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: The caller's account no longer exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/{uuid}:
    get:
      tags:
      - Account
      summary: Returns a user's profile by public UUID
      operationId: get_user
      parameters:
      - name: uuid
        in: path
        description: Public UUID of the user to fetch.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The requested user's profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          description: Malformed UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '403':
          description: Caller is not permitted to read this user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No user with this UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
    delete:
      tags:
      - Account
      summary: Deletes a user account
      description: The request must carry the caller's current password. The account is closed immediately, and its data is permanently erased within 30 days.
      operationId: delete_user
      parameters:
      - name: uuid
        in: path
        description: Public UUID of the user to delete.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteUserRequest'
        required: true
      responses:
        '204':
          description: Account deleted.
        '400':
          description: Invalid or wrong password, or already deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '403':
          description: Caller is not permitted to delete this user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No user with this UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/{uuid}/email:
    patch:
      tags:
      - Account
      summary: Requests an email address change
      description: Requires the current password. The new address becomes active once the user opens the confirmation link emailed to it (valid for 32 minutes), which completes through `POST /api/auth/verify-email-change`.
      operationId: change_email
      parameters:
      - name: uuid
        in: path
        description: Public UUID of the user whose email is being changed.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeEmailRequest'
        required: true
      responses:
        '204':
          description: Change requested; a confirmation link was emailed to the new address.
        '400':
          description: Invalid email, invalid password, or wrong current password.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '403':
          description: Caller is not permitted to change this user's email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No user with this UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '409':
          description: The new email is already taken.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
  /api/users/{uuid}/password:
    patch:
      tags:
      - Account
      summary: Changes the user's password after verifying the current one
      description: Every access token issued before the change stops working, so clients must sign in again.
      operationId: change_password
      parameters:
      - name: uuid
        in: path
        description: Public UUID of the user whose password is being changed.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePasswordRequest'
        required: true
      responses:
        '204':
          description: Password changed.
        '400':
          description: Invalid new password or wrong current password.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: Missing or invalid JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '403':
          description: Caller is not permitted to change this user's password.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No user with this UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
      - jwt: []
components:
  schemas:
    ChangePasswordRequest:
      type: object
      description: Request body for `PATCH /api/users/:uuid/password`.
      required:
      - current_password
      - new_password
      properties:
        current_password:
          type: string
          description: The current password.
        new_password:
          type: string
          description: The new password, subject to the same rules as at registration.
    UserResponse:
      type: object
      description: Public representation of a user.
      required:
      - uuid
      - email
      - role
      - email_verified
      - locale
      - created_at
      properties:
        created_at:
          type: string
          description: Account creation timestamp (ISO 8601).
        email:
          type: string
          description: Email address.
        email_verified:
          type: boolean
          description: Whether the email has been verified.
        locale:
          type: string
          description: Language of the account's emails (`"en"` or `"fr"`).
        role:
          type: string
          description: User role (`"user"` or `"admin"`).
        uuid:
          type: string
          description: Public UUID.
    ApiErrorBody:
      type: object
      description: 'Error envelope returned with every non-success status: `{ "error": { "code", "message" } }`.'
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorDetail'
          description: Error detail.
    ChangeLocaleRequest:
      type: object
      description: Request body for `PATCH /api/users/me/locale`.
      required:
      - locale
      properties:
        locale:
          type: string
          description: The language of the caller's emails (`"en"` or `"fr"`).
    Verify2FASetupRequest:
      type: object
      description: Request body for `POST /api/users/me/2fa/verify-setup`.
      required:
      - code
      properties:
        code:
          type: string
          description: A current TOTP code generated from the secret returned at enable time.
    DeleteUserRequest:
      type: object
      description: Request body for `DELETE /api/users/:uuid`.
      required:
      - password
      properties:
        password:
          type: string
          description: The current password, required to confirm account deletion.
    Disable2FARequest:
      type: object
      description: Request body for `POST /api/users/me/2fa/disable`.
      required:
      - password
      - code
      properties:
        code:
          type: string
          description: A valid TOTP code or backup code, proving possession of the second factor.
        password:
          type: string
          description: The user's password for confirmation.
    ChangeEmailRequest:
      type: object
      description: Request body for `PATCH /api/users/:uuid/email`.
      required:
      - new_email
      - current_password
      properties:
        current_password:
          type: string
          description: The current password for confirmation.
        new_email:
          type: string
          description: The new email address.
    ApiErrorDetail:
      type: object
      description: Detail of an error response.
      required:
      - code
      properties:
        code:
          type: string
          description: Stable key identifying the error (for example `"verify.invalid_uuid"`). Clients localize by this key.
        message:
          type:
          - string
          - 'null'
          description: 'Present on most error kinds and equal to `code`; the API returns no localized text.

            Absent for error kinds that carry no extra detail.'
    Enable2FAResponse:
      type: object
      description: Response body for `POST /api/users/me/2fa/enable`.
      required:
      - qr_uri
      - backup_codes
      - secret
      properties:
        backup_codes:
          type: array
          items:
            type: string
          description: Single-use backup codes, shown only once.
        qr_uri:
          type: string
          description: The `otpauth://` URI for QR code generation.
        secret:
          type: string
          description: The base32-encoded TOTP secret.
    TwoFactorStatusResponse:
      type: object
      description: Response body for `GET /api/users/me/2fa`.
      required:
      - enabled
      properties:
        enabled:
          type: boolean
          description: Whether 2FA is enabled for the caller.
  securitySchemes:
    bearer_api_key:
      type: http
      scheme: bearer
      description: A `pm_live_*` or `pm_test_*` API key.
    jwt:
      type: http
      scheme: bearer
      description: A short-lived token from `/api/auth/login`, or `/oauth/token` for an agent.
x-refined-from:
- pricklymails-com-openapi.json
- pricklymails-com-openapi.yaml