Live Direct Marketing Authentication API

The Authentication API from Live Direct Marketing — 13 operation(s) for authentication.

Operations 13

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /api/auth/register Register a new account · Register a new account (self-service). #
Ask an LLM
“How do I sign up for a new Live Direct Marketing account?”
“Can an AI agent bootstrap an account without setting a password?”
Tell an agent
Register a new account for {email} with password {password}, accepting the terms {termsAccepted}.
Sign up {email} for organization {org} with website {website}.
GET /api/auth/verify-email Confirm a signup email address · Confirm email by the token from the signup email. #
Ask an LLM
“What do I do with the token from my signup confirmation email?”
“Why is my account still pending after I confirmed my email?”
Tell an agent
Verify my email with token {token}.
Confirm signup token {token} and return the result as {format}.
POST /api/auth/signup-questionnaire Submit the signup questionnaire for approval · Issue #322 — submit the signup questionnaire for accounts that did not qualify… #
Ask an LLM
“My signup was not auto-activated because I used a free mailbox; what extra information do I submit?”
“Which details does the signup questionnaire ask about my company and outreach volume?”
Tell an agent
Submit the signup questionnaire with token {token} for company {company_name}, use case {use_case}.
Send the questionnaire as {applicant_type} with contacts sourced from {contacts_source} using token {token}.
POST /api/auth/otc Exchange a one-time sign-in code for a session · Exchange the one-time sign-in code from the email-verification redirect for a… #
Ask an LLM
“After verifying my email I got a one-time code; how is it turned into a session?”
“How long is the one-time sign-in code valid?”
Tell an agent
Exchange my one-time sign-in code for a session.
Redeem the single-use code from the verification redirect.
POST /api/auth/login Log in with email and password · Authenticate a user and issue access + refresh tokens. #
Ask an LLM
“Can I log in with my email and password and get access and refresh tokens?”
“Why would login return 403 even though my password is correct?”
Tell an agent
Log in as {email} with password {password}.
Authenticate {email} and get access tokens.
POST /api/auth/refresh Refresh an access token · Exchange a refresh token for a new access + refresh pair #
Ask an LLM
“My access token expired; can I get a new one without logging in again?”
“What do I send to rotate my access and refresh token pair?”
Tell an agent
Refresh my session with refresh token {refreshToken}.
Exchange refresh token {refreshToken} for a new token pair.
POST /api/auth/logout Log out and revoke a refresh token · Revoke a refresh token and end the session #
Ask an LLM
“Can I end my session so the refresh token can no longer be used?”
“What happens to my refresh token when I log out?”
Tell an agent destructive · confirm first
Log out and revoke refresh token {refreshToken}.
End the session for refresh token {refreshToken}.
POST /api/auth/forgot-password Request a password reset email · Request a password reset email (rate-limited per email and per IP) #
Ask an LLM
“I forgot my password; can I have a reset link emailed to me?”
“Is there a rate limit on password reset requests?”
Tell an agent
Send a password reset email to {email}.
Request a password reset for account {email}.
POST /api/auth/reset-password Set a new password with a reset token · Reset password using a reset token #
Ask an LLM
“Once I have the reset token from my email, how do I choose a new password?”
“Can I reset my password without being logged in?”
Tell an agent
Reset my password to {newPassword} using token {token}.
Use reset token {token} to set password {newPassword}.
GET /api/auth/profile Get my user profile · Get the current authenticated user profile #
Ask an LLM
“What profile details are stored for the account I am signed in with?”
“Can I view my own user profile?”
Tell an agent
Get my user profile.
Show the profile of the signed-in user.
GET /api/auth/me Get who I am signed in as (me alias) · Get current user profile (alias of /auth/profile) #
Ask an LLM
“Which user am I currently authenticated as, using the short me endpoint?”
“Is there a quick whoami check for my current token?”
Tell an agent
Tell me who I am logged in as via the me endpoint.
Run a whoami on my current session.
POST /api/auth/change-password Change my password · Change the password of the authenticated user (current required) #
Ask an LLM
“Can I change my password while signed in if I know the current one?”
“Do I need my current password to set a new one from my account?”
Tell an agent
Change my password, I'll provide the current one.
Update the password on my signed-in account.
POST /api/auth/impersonate/{userId} Impersonate another user (super admin) · Impersonate another user (SUPER role only) #
Ask an LLM
“As a super admin, can I sign in as another user to debug their issue?”
“Who is allowed to impersonate a user?”
Tell an agent
Impersonate user {userId}.
Sign in as user {userId} for support.

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/live-direct-marketing-online:live-direct-marketing-online-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

live-direct-marketing-online-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 Authentication API
  description: 'Multi-tenant B2B outreach automation platform. Auth: JWT Bearer (15-min) or tenant API key (ldm_*) managed in CRM Settings → API Keys. All tenant-scoped endpoints require the X-Tenant-Id header.'
  version: 1.0.0
  contact: {}
servers:
- url: https://api.live-direct-marketing.online
  description: Production
- url: https://api.dev.live-direct-marketing.online
  description: Development
- url: http://127.0.0.1:3000
  description: Local
tags:
- name: Authentication
paths:
  /api/auth/register:
    post:
      operationId: AuthController_register
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Register a new account (self-service).
      tags:
      - Authentication
  /api/auth/verify-email:
    get:
      operationId: AuthController_verifyEmail
      parameters:
      - name: token
        required: true
        in: query
        schema:
          type: string
      - name: format
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Confirm email by the token from the signup email.
      tags:
      - Authentication
  /api/auth/signup-questionnaire:
    post:
      operationId: AuthController_submitQuestionnaire
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignupQuestionnaireDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: 'Issue #322 — submit the signup questionnaire for accounts that did not qualify…'
      tags:
      - Authentication
  /api/auth/otc:
    post:
      operationId: AuthController_exchangeOtc
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Exchange the one-time sign-in code from the email-verification redirect for a…
      tags:
      - Authentication
  /api/auth/login:
    post:
      operationId: AuthController_login
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Authenticate a user and issue access + refresh tokens.
      tags:
      - Authentication
  /api/auth/refresh:
    post:
      operationId: AuthController_refresh
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Exchange a refresh token for a new access + refresh pair
      tags:
      - Authentication
  /api/auth/logout:
    post:
      operationId: AuthController_logout
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Revoke a refresh token and end the session
      tags:
      - Authentication
  /api/auth/forgot-password:
    post:
      operationId: AuthController_forgotPassword
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForgotPasswordDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Request a password reset email (rate-limited per email and per IP)
      tags:
      - Authentication
  /api/auth/reset-password:
    post:
      operationId: AuthController_resetPassword
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetPasswordDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Reset password using a reset token
      tags:
      - Authentication
  /api/auth/profile:
    get:
      operationId: AuthController_getProfile
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Get the current authenticated user profile
      tags:
      - Authentication
  /api/auth/me:
    get:
      operationId: AuthController_getMe
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Get current user profile (alias of /auth/profile)
      tags:
      - Authentication
  /api/auth/change-password:
    post:
      operationId: AuthController_changePassword
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Change the password of the authenticated user (current required)
      tags:
      - Authentication
  /api/auth/impersonate/{userId}:
    post:
      operationId: AuthController_impersonate
      parameters:
      - name: userId
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Impersonate another user (SUPER role only)
      tags:
      - Authentication
components:
  schemas:
    SignupQuestionnaireDto:
      type: object
      properties:
        token:
          type: string
          description: signup_token из ответа регистрации (живёт 7 дней)
          minLength: 32
          maxLength: 128
        applicant_type:
          type: object
          description: 'Тип заявителя: юрлицо или частное лицо (анкета без сайта компании)'
        company_name:
          type: string
          minLength: 2
          maxLength: 200
        company_website:
          type: string
          description: 'Домен проверяется автоматом: зарегистрирован, резолвится, отвечает по HTTP'
          maxLength: 300
        company_email:
          type: string
          description: Корпоративный ящик для связи и апрува
          format: email
        use_case:
          type: string
          minLength: 10
          maxLength: 1000
        contacts_source:
          type: object
          description: Откуда берётся база контактов — главный маркер спам-рассылки
        outbound_volume_monthly:
          type: number
          minimum: 0
          maximum: 10000000
        operator_type:
          type: object
          description: 'Кто ведёт аккаунт: человек, агент или связка'
        human_contact:
          type: string
          description: Контакт ответственного человека (имя/телефон/мессенджер)
          maxLength: 300
        country:
          type: string
          maxLength: 200
        company_registration_id:
          type: string
          description: ИНН/рег.номер юрлица, если есть
          maxLength: 64
      required:
      - token
      - applicant_type
      - company_name
      - use_case
      - contacts_source
    ResetPasswordDto:
      type: object
      properties:
        token:
          type: string
        newPassword:
          type: string
          minLength: 8
          maxLength: 128
      required:
      - token
      - newPassword
    RegisterDto:
      type: object
      properties:
        email:
          type: string
          format: email
        password:
          type: string
          minLength: 8
          maxLength: 128
        firstName:
          type: string
          maxLength: 100
        lastName:
          type: string
          maxLength: 100
        channel:
          type: object
        org:
          type: string
          maxLength: 200
        use_case:
          type: string
          maxLength: 500
        website:
          type: string
          maxLength: 300
        full_account:
          type: boolean
        termsAccepted:
          type: boolean
      required:
      - email
    ForgotPasswordDto:
      type: object
      properties:
        email:
          type: string
          format: email
      required:
      - email
    LoginDto:
      type: object
      properties:
        email:
          type: string
          format: email
        password:
          type: string
      required:
      - email
      - password
    RefreshDto:
      type: object
      properties:
        refreshToken:
          type: string
      required:
      - refreshToken
  securitySchemes:
    jwt:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: JWT access token from /auth/login (Bearer <token>)
    tenant-api-key:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Tenant API key (Bearer ldm_*) for MCP/A2A clients. Issued via CRM Settings → API Keys.
    rpa-service:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Dedicated RPA service key. No tenant API-key or query-key authentication.