Instantly Analytics API

Endpoints related to analytics

Operations 8

POST /api/v2/accounts/warmup-analytics Get warmup analytics #
GET /api/v2/accounts/analytics/daily Get daily account analytics #
POST /api/v2/accounts/test/vitals Test account vitals #
GET /api/v2/campaigns/analytics Get campaign(s) analytics #
GET /api/v2/campaigns/analytics/overview Get campaign(s) analytics overview #
GET /api/v2/campaigns/analytics/daily Get daily campaign analytics #
GET /api/v2/campaigns/analytics/steps Get campaign steps analytics #
GET /api/v2/subsequences/{id}/analytics/steps Get subsequence step and variant analytics #

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/instantly-ai-analytics-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

instantly-ai-analytics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Explorer Analytics API
  description: The entire API V2 documentation is interactive and can be tested here. To the right side of every endpoint you will see a box with an example request. You can click on the "Try it" button to send a request to the server right from the docs. You will need to provide an API key by clicking the `ApiKeyAuth_token` blue text.
  version: 2.0.0
servers:
- url: https://api.instantly.ai
  description: Instantly API Server
security:
- ApiKeyAuth: []
tags:
- name: Analytics
  description: Endpoints related to analytics
  x-group: Analytics
paths:
  /api/v2/accounts/warmup-analytics:
    post:
      operationId: getWarmupAnalytics
      summary: Get warmup analytics
      tags:
      - Analytics
      description: 'Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                emails:
                  type: array
                  items:
                    type: string
                    example: user@example.com
                  maxItems: 100
                  minItems: 1
                  description: List of emails to get warmup analytics for. The emails should be attached to accounts in your workspace.
              required:
              - emails
        required: true
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  email_date_data:
                    type: object
                    additionalProperties:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          sent:
                            type: number
                            example: 100
                          landed_inbox:
                            type: number
                            example: 50
                          landed_spam:
                            type: number
                            example: 10
                          received:
                            type: number
                            example: 100
                  aggregate_data:
                    type: object
                    additionalProperties:
                      type: object
                      properties:
                        sent:
                          type: number
                          examples:
                          - 100
                          example: 100
                        received:
                          type: number
                          examples:
                          - 100
                          example: 100
                        landed_inbox:
                          type: number
                          examples:
                          - 50
                          example: 50
                        landed_spam:
                          type: number
                          examples:
                          - 10
                          example: 10
                        health_score_label:
                          type: string
                          examples:
                          - Good
                          example: Good
                        health_score:
                          type: number
                          examples:
                          - 90
                          example: 90
              example:
                email_date_data:
                  example1@example.com:
                    '2023-10-01':
                      sent: 10
                      landed_inbox: 8
                      landed_spam: 2
                      received: 10
                    '2023-10-02':
                      sent: 5
                      landed_inbox: 5
                      received: 5
                  example2@example.com:
                    '2023-10-01':
                      sent: 7
                      landed_inbox: 7
                      received: 7
                aggregate_data:
                  example1@example.com:
                    sent: 15
                    landed_inbox: 13
                    landed_spam: 2
                    received: 15
                    health_score_label: 87%
                    health_score: 87
                  example2@example.com:
                    sent: 7
                    landed_inbox: 7
                    health_score_label: 100%
                    health_score: 100
        '401':
          description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 401
                    examples:
                    - 401
                    example: 401
                  error:
                    type: string
                    enum:
                    - Unauthorized
                    examples:
                    - Unauthorized
                    example: Unauthorized
                  message:
                    type: string
                    examples:
                    - Missing Authorization header
                    example: Missing Authorization header
                required:
                - statusCode
                - error
                - message
        '402':
          description: This request cannot be fulfilled because the workspace does not have an active paid plan
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 402
                    examples:
                    - 402
                    example: 402
                  error:
                    type: string
                    enum:
                    - Payment Required
                    examples:
                    - Payment Required
                    example: Payment Required
                  message:
                    type: string
                    examples:
                    - Workspace does not have an active paid plan
                    example: Workspace does not have an active paid plan
                required:
                - statusCode
                - error
                - message
        '404':
          description: The requested resource was not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 404
                    examples:
                    - 404
                    example: 404
                  error:
                    type: string
                    enum:
                    - Not Found
                    examples:
                    - Not Found
                    example: Not Found
                  message:
                    type: string
                    examples:
                    - Resource not found
                    example: Resource not found
                required:
                - statusCode
                - error
                - message
        '429':
          description: You have exceeded the rate limit. Please check the rate limit docs for more information.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 429
                    examples:
                    - 429
                    example: 429
                  error:
                    type: string
                    enum:
                    - Too Many Requests
                    examples:
                    - Too Many Requests
                    example: Too Many Requests
                  message:
                    type: string
                    examples:
                    - Rate limit exceeded
                    example: Rate limit exceeded
                required:
                - statusCode
                - error
                - message
  /api/v2/accounts/analytics/daily:
    get:
      operationId: getDailyAccountAnalytics
      summary: Get daily account analytics
      tags:
      - Analytics
      description: Get daily account analytics showing the number of emails sent per day for each email account. Useful for tracking daily sending activity across your accounts.
      parameters:
      - schema:
          type: string
          example: '2024-01-01'
        examples:
          '2024-01-01':
            value: '2024-01-01'
          '2024-01-01T00:00:00.000Z':
            value: '2024-01-01T00:00:00.000Z'
        in: query
        name: start_date
        required: false
        description: Start date for the analytics period. Defaults to a 30-day window ending at end_date. The maximum range is 31 days.
      - schema:
          type: string
          example: '2024-01-31'
        examples:
          '2024-01-31':
            value: '2024-01-31'
          '2024-01-31T00:00:00.000Z':
            value: '2024-01-31T00:00:00.000Z'
        in: query
        name: end_date
        required: false
        description: End date for the analytics period. Defaults to the current date.
      - schema:
          type: array
          minItems: 1
          maxItems: 200
          items:
            type: string
            examples:
            - user@example.com
            example: user@example.com
        in: query
        name: emails
        required: false
        description: Email accounts to include. This filter is required and accepts at most 200 unique accounts.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    date:
                      type: string
                      description: The date of the analytics entry, in YYYY-MM-DD format
                      example: '2024-01-15'
                    email_account:
                      type: string
                      description: The email account that sent the emails
                      example: user@example.com
                    sent:
                      type: integer
                      description: The total number of campaign emails sent on this date by this account, including emails for subsequences
                      example: 150
                    bounced:
                      type: integer
                      description: The number of emails that bounced on this date for this account for campaigns - including subsequences
                      example: 3
                    contacted:
                      type: integer
                      description: The total number of unique contacts who received an email on this date from this account
                      example: 120
                    new_leads_contacted:
                      type: integer
                      description: The total number of new leads contacted on this date from this account
                      example: 50
                    opened:
                      type: integer
                      description: The total number of opened emails on this date for this account
                      example: 99
                    unique_opened:
                      type: integer
                      description: The total number of unique opened emails on this date for this account
                      example: 60
                    replies:
                      type: integer
                      description: The total number of replies received on this date for this account
                      example: 8
                    unique_replies:
                      type: integer
                      description: The total number of unique replies received on this date for this account
                      example: 7
                    replies_automatic:
                      type: integer
                      description: The total number of automatic replies detected on this date for this account
                      example: 2
                    unique_replies_automatic:
                      type: integer
                      description: The total number of unique automatic replies detected on this date for this account
                      example: 1
                    clicks:
                      type: integer
                      description: The total number of links clicked on this date for this account
                      example: 30
                    unique_clicks:
                      type: integer
                      description: The total number of unique links clicked on this date for this account. Unique meaning from unique leads, not unique links
                      example: 20
                  required:
                  - date
                  - email_account
                  - sent
                  - bounced
                  - contacted
                  - new_leads_contacted
                  - opened
                  - unique_opened
                  - replies
                  - unique_replies
                  - replies_automatic
                  - unique_replies_automatic
                  - clicks
                  - unique_clicks
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The error message
                    example: Start Date must be earlier than End Date
        '401':
          description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 401
                    examples:
                    - 401
                    example: 401
                  error:
                    type: string
                    enum:
                    - Unauthorized
                    examples:
                    - Unauthorized
                    example: Unauthorized
                  message:
                    type: string
                    examples:
                    - Missing Authorization header
                    example: Missing Authorization header
                required:
                - statusCode
                - error
                - message
        '402':
          description: This request cannot be fulfilled because the workspace does not have an active paid plan
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 402
                    examples:
                    - 402
                    example: 402
                  error:
                    type: string
                    enum:
                    - Payment Required
                    examples:
                    - Payment Required
                    example: Payment Required
                  message:
                    type: string
                    examples:
                    - Workspace does not have an active paid plan
                    example: Workspace does not have an active paid plan
                required:
                - statusCode
                - error
                - message
        '404':
          description: The requested resource was not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 404
                    examples:
                    - 404
                    example: 404
                  error:
                    type: string
                    enum:
                    - Not Found
                    examples:
                    - Not Found
                    example: Not Found
                  message:
                    type: string
                    examples:
                    - Resource not found
                    example: Resource not found
                required:
                - statusCode
                - error
                - message
        '413':
          description: The analytics request is too large for the requested workspace or date range.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 413
                    examples:
                    - 413
                    example: 413
                  error:
                    type: string
                    enum:
                    - Payload Too Large
                    examples:
                    - Payload Too Large
                    example: Payload Too Large
                  message:
                    type: string
                    examples:
                    - Analytics request is too large for this workspace. Add an emails filter or request a smaller date range.
                    example: Analytics request is too large for this workspace. Add an emails filter or request a smaller date range.
                required:
                - statusCode
                - error
                - message
        '429':
          description: You have exceeded the rate limit. Please check the rate limit docs for more information.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 429
                    examples:
                    - 429
                    example: 429
                  error:
                    type: string
                    enum:
                    - Too Many Requests
                    examples:
                    - Too Many Requests
                    example: Too Many Requests
                  message:
                    type: string
                    examples:
                    - Rate limit exceeded
                    example: Rate limit exceeded
                required:
                - statusCode
                - error
                - message
  /api/v2/accounts/test/vitals:
    post:
      operationId: testAccountVitals
      summary: Test account vitals
      tags:
      - Analytics
      description: 'Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accounts:
                  type: array
                  items:
                    type: string
                    example: user@example.com
              required: []
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  success_list:
                    type: array
                    items:
                      type: object
                      properties:
                        domain:
                          type: string
                          example: example.com
                        allPass:
                          type: boolean
                          example: true
                        mx:
                          type: boolean
                          example: true
                        spf:
                          type: boolean
                          example: true
                        dkim:
                          type: boolean
                          example: true
                        dmarc:
                          type: boolean
                          example: true
                  failure_list:
                    type: array
                    items:
                      type: object
                      properties:
                        domain:
                          type: string
                          example: example.com
                        allPass:
                          type: boolean
                          example: false
                        mx:
                          type: boolean
                          example: false
                        spf:
                          type: boolean
                          example: false
                        dkim:
                          type: boolean
                          example: false
                        dmarc:
                          type: boolean
                          example: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad request - no emails sent
        '401':
          description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 401
                    examples:
                    - 401
                    example: 401
                  error:
                    type: string
                    enum:
                    - Unauthorized
                    examples:
                    - Unauthorized
                    example: Unauthorized
                  message:
                    type: string
                    examples:
                    - Missing Authorization header
                    example: Missing Authorization header
                required:
                - statusCode
                - error
                - message
        '402':
          description: This request cannot be fulfilled because the workspace does not have an active paid plan
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 402
                    examples:
                    - 402
                    example: 402
                  error:
                    type: string
                    enum:
                    - Payment Required
                    examples:
                    - Payment Required
                    example: Payment Required
                  message:
                    type: string
                    examples:
                    - Workspace does not have an active paid plan
                    example: Workspace does not have an active paid plan
                required:
                - statusCode
                - error
                - message
        '404':
          description: The requested resource was not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 404
                    examples:
                    - 404
                    example: 404
                  error:
                    type: string
                    enum:
                    - Not Found
                    examples:
                    - Not Found
                    example: Not Found
                  message:
                    type: string
                    examples:
                    - Resource not found
                    example: Resource not found
                required:
                - statusCode
                - error
                - message
        '429':
          description: You have exceeded the rate limit. Please check the rate limit docs for more information.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                    - 429
                    examples:
                    - 429
                    example: 429
                  error:
                    type: string
                    enum:
                    - Too Many Requests
                    examples:
                    - Too Many Requests
                    example: Too Many Requests
                  message:
                    type: string
                    examples:
                    - Rate limit exceeded
                    example: Rate limit exceeded
                required:
                - statusCode
                - error
                - message
  /api/v2/campaigns/analytics:
    get:
      operationId: getCampaignAnalytics
      summary: Get campaign(s) analytics
      tags:
      - Analytics
      description: Get analytics for one or multiple campaigns. Specify the `id` field to get the analytics for a single campaign, or leave it empty to get the analytics for all campaigns
      parameters:
      - schema:
          type: string
          format: uuid
          example: 019ffad2-9ba1-7bc9-8d59-2dbf9cad03cd
        example: 019ffad2-9ba1-7bc9-8d59-2dbf9cad03cd
        in: query
        name: id
        required: false
        description: A campaign ID to get the analytics for. Leave this field empty to get the analytics for all campaigns
      - schema:
          type: array
          items:
            type: string
            description: 'A list of campaign IDs to get the analytics for. Leave this field empty to get the analytics for all campaigns. You can specify multiple IDs by adding the same parameter multiple times, for instance: `/campaigns/analytics?ids=123&ids=456`'
            format: uuid
            examples:
            - 019ffad2-9ba1-7bc9-8d59-2dc06bc9bc75
            example: 019ffad2-9ba1-7bc9-8d59-2dc06bc9bc75
        in: query
        name: ids
        required: false
      - schema:
          type: string
          example: '2024-01-01'
        examples:
          '2024-01-01':
            value: '2024-01-01'
          '2024-01-01T00:00:00.000Z':
            value: '2024-01-01T00:00:00.000Z'
        in: query
        name: start_date
        required: false
        description: Start of the analytics range. Accepts a date-only value (`YYYY-MM-DD`) or a full ISO 8601 timestamp. Date-only values are interpreted as UTC midnight — e.g. `2026-04-07` is treated as `2026-04-07T00:00:00.000Z`.
      - schema:
          type: string
          example: '2024-01-01'
        examples:
          '2024-01-01':
            value: '2024-01-01'
          '2024-01-01T00:00:00.000Z':
            value: '2024-01-01T00:00:00.000Z'
        in: query
        name: end_date
        required: false
        description: End of the analytics range. Accepts a date-only value (`YYYY-MM-DD`) or a full ISO 8601 timestamp. Date-only values are interpreted as UTC midnight — e.g. `2026-04-07` is treated as `2026-04-07T00:00:00.000Z`.
      - schema:
          type: boolean
          default: false
          example: true
        example: true
        in: query
        name: exclude_total_leads_count
        required: false
        description: Exclude the total leads from the result. Setting this to true will considerably decrease the response time
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    campaign_name:
                      type: string
                      description: The name of the campaign
                      example: My Test Campaign
                    campaign_id:
                      type: string
                      description: The ID of the campaign
                      format: uuid
                      example: 019ffad2-9ba1-7bc9-8d59-2dc1d3f0cbdd
                    campaign_status:
                      type: number
                      description: The campaign status
                      x-enumDescriptions:
                        '0': Draft
                        '1': Active
                        '2': Paused
                        '3': Completed
                        '4': Running Subsequences
                        '-99': Account Suspended
                        '-1': Accounts Unhealthy
                        '-2': Bounce Protect
                      example: 1
                    campaign_is_evergreen:
                      type: boolean
                      description: Whether the campaign is evergreen
                      example: true
                    leads_count:
                      type: integer
                      description: The total number of leads
                      example: 1500
                    contacted_count:
                      type: integer
                      description: Number of leads for whom the sequence has started
                      example: 1200
                    emails_sent_count:
                      type: integer
                      description: The total number of sent emails
                      example: 5000
                    new_leads_contacted_count:
                      type: integer
                      description: The total number of new leads contacted
                      example: 200
                    open_count:
                      type: integer
                      description: The number of leads that opened at least one email
                      example: 800
                    open_count_unique:
                      type: integer
                      description: The number of unique email opens (first open per lead)
                      example: 750
                    open_count_unique_by_step:
                      type: integer
                      description: The number of unique email opens per step (first open per lead per step)
                      example: 900
                    reply_count:
                      type: integer
                      description: The total number of replies received (if a lead replies multiple times, each reply is counted)
                      example: 300
                    reply_count_unique:
                      type: integer
                      description: The number of unique replies (first reply per lead). Excludes automatic replies.
                      example: 280
                    reply_count_unique_by_step:
                      type: integer
                      description: The number of unique replies per step (first reply per lead per step). Excludes automatic replies.
                      example: 350
                    reply_count_automatic:
                      type: integer
                      description: The total number of automatic replies detected
                      example: 15
                    reply_count_automatic_unique:
                      type: integer
                      description: The number of unique automatic replies (first automatic reply per lead)
                      example: 12
                    reply_count_au

# --- truncated at 32 KB (82 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/instantly-ai/refs/heads/main/openapi/instantly-ai-analytics-api-openapi.yml