Qualified Emails API

Outbound email activity sent from Qualified, with engagement timestamps.

Operations 2

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

GET /v2/emails List outbound email activity · List emails #
Ask an LLM
“How do I see which outbound emails were opened, clicked or bounced recently?”
“Can I list only the emails sent to one particular lead?”
Tell an agent
List emails with engagement updated since {updated_after}.
Show all emails sent to lead {lead_id}.
GET /v2/emails/{id} Get one email activity by id · Get an email #
Ask an LLM
“Can I check the status of a single sent email by its id?”
“Where do I find the details of one specific outbound email?”
Tell an agent
Get email activity {id}.
Show whether email {id} was opened, clicked or bounced.

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/qualified-com:qualified-com-emails-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

qualified-com-emails-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Qualified Enterprise Emails API
  version: '2.0'
  description: '# Overview


    _Last updated: August 9, 2026_


    The Qualified Enterprise API connects your Qualified data to your warehouse, CDP, and downstream systems.'
servers:
- url: https://api.qualified.com
  description: Production
security:
- bearerToken: []
tags:
- name: Emails
  description: Outbound email activity sent from Qualified, with engagement timestamps.
paths:
  /v2/emails:
    get:
      summary: List emails
      operationId: listEmails
      description: 'Returns outbound email activity, newest first; only sent and bounced mailings are included. Window with `updated_after`/`updated_before`, which surfaces post-send engagement because `updatedAt` advances when an open, click, reply, or bounce is recorded, or `created_after`/`created_before` for new sends only. Emails become available in this list 30 minutes after they are created.


        **Scope:** `email:view`'
      tags:
      - Emails
      parameters:
      - $ref: '#/components/parameters/After'
      - $ref: '#/components/parameters/Before'
      - $ref: '#/components/parameters/CreatedAfter'
      - $ref: '#/components/parameters/CreatedBefore'
      - $ref: '#/components/parameters/UpdatedAfter'
      - $ref: '#/components/parameters/UpdatedBefore'
      - $ref: '#/components/parameters/LeadId'
      responses:
        '200':
          description: A page of emails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Email'
                  pageInfo:
                    $ref: '#/components/schemas/PageInfo'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/emails/{id}:
    get:
      summary: Get an email
      operationId: getEmail
      description: 'Returns a single email activity by id.


        **Scope:** `email:view`'
      tags:
      - Emails
      parameters:
      - name: id
        in: path
        required: true
        description: Encoded email id.
        schema:
          type: string
      responses:
        '200':
          description: The email.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Email'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    CodeErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code.
        message:
          type: string
          description: Human-readable error message.
    Email:
      type: object
      description: An outbound email activity associated with a lead.
      properties:
        id:
          type: string
          description: Encoded email identifier.
        parentEmailId:
          type:
          - string
          - 'null'
          description: Encoded id of the parent email in the thread.
        subject:
          type: string
          description: Email subject line.
        provider:
          type: string
          description: Sending provider.
        status:
          type: string
          description: Delivery status. Only sent and bounced mailings are returned.
        leadId:
          type:
          - string
          - 'null'
          description: Encoded id of the lead this email was sent to, or null if unresolved. Emails are addressed to a person rather than a browser, so `leadId` is the identity key here and there is no `visitorId`.
        campaignName:
          type:
          - string
          - 'null'
          description: Campaign name, if part of a campaign.
        senderEmail:
          type:
          - string
          - 'null'
          description: Sender email address.
        recipientEmail:
          type:
          - string
          - 'null'
          description: Recipient email address.
        body:
          type:
          - string
          - 'null'
          description: Email body content.
        mailingType:
          type:
          - string
          - 'null'
          description: Type of mailing.
        sentAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the email was sent.
        openedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the email was most recently opened.
        repliedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the email was most recently replied to.
        clickedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When a link in the email was most recently clicked.
        bouncedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the bounce was reported.
        bounceType:
          type:
          - string
          - 'null'
          enum:
          - soft_bounce
          - hard_bounce
          description: Type of bounce.
        createdAt:
          type: string
          format: date-time
          description: When the email record was created.
        updatedAt:
          type: string
          format: date-time
          description: When the email was last updated. Advances on opens, clicks, replies, and bounces.
    PageInfo:
      type: object
      description: Cursor-based pagination metadata.
      properties:
        hasNextPage:
          type: boolean
          description: Whether more results exist after `endCursor`.
        hasPreviousPage:
          type: boolean
          description: Whether more results exist before `startCursor`.
        startCursor:
          type:
          - string
          - 'null'
          description: Cursor for the first item on this page.
        endCursor:
          type:
          - string
          - 'null'
          description: Cursor for the last item on this page.
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
  responses:
    NotFound:
      description: The record was not found, or the id could not be decoded.
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/ErrorResponse'
            - $ref: '#/components/schemas/CodeErrorResponse'
    Forbidden:
      description: The token lacks the required OAuth scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CodeErrorResponse'
          example:
            code: insufficient_scope
    InternalServerError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Internal server error
    BadRequest:
      description: Malformed request, such as an invalid date or cursor.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid token, or the API is not enabled for the team.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CodeErrorResponse'
          example:
            code: invalid_token
    TooManyRequests:
      description: A rate limit was exceeded. The three time-window limits set a `Retry-After` header; the concurrency limit does not, so treat its absence as "retry once an in-flight request finishes".
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CodeErrorResponse'
          example:
            code: rate_limited
            message: Enterprise API rate limit exceeded
  parameters:
    UpdatedBefore:
      name: updated_before
      in: query
      required: false
      description: Return records updated at or before this time. Interpreted as UTC unless an offset is given. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day, so pass the next day's date to include a whole day.
      schema:
        type: string
    CreatedBefore:
      name: created_before
      in: query
      required: false
      description: Return records created at or before this time. Accepts an ISO-8601 timestamp, interpreted as UTC unless it carries an offset. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day, so pass the next day's date to include a whole day.
      schema:
        type: string
    Before:
      name: before
      in: query
      required: false
      description: Cursor for backward pagination. Pass the `startCursor` from the previous response.
      schema:
        type: string
    UpdatedAfter:
      name: updated_after
      in: query
      required: false
      description: Return records updated at or after this time. Interpreted as UTC unless an offset is given. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day.
      schema:
        type: string
    After:
      name: after
      in: query
      required: false
      description: Cursor for forward pagination. Pass the `endCursor` from the previous response.
      schema:
        type: string
    LeadId:
      name: lead_id
      in: query
      required: false
      description: Return only emails for this lead.
      schema:
        type: string
    CreatedAfter:
      name: created_after
      in: query
      required: false
      description: Return records created at or after this time. Accepts an ISO-8601 timestamp, interpreted as UTC unless it carries an offset. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day.
      schema:
        type: string
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
      bearerFormat: Token
x-tagGroups:
- name: Write APIs
  tags:
  - Leads
  - Companies
  - Bulk
- name: Activity APIs
  tags:
  - Sessions
  - Conversations
  - Messages
  - Meetings
  - Emails
- name: Utility APIs
  tags:
  - Cancel Meeting
  - GDPR
- name: Legacy Reporting API
  tags:
  - Bot Conversations
  - Rep Conversations