---
title: "Connect sequencers and generate report"
method: POST
path: "/api/v1/domain-burn/add-api-key"
tags: ["Domain Burn Alerts"]
---

# Connect sequencers and generate report

`POST /api/v1/domain-burn/add-api-key`

## Request

- Base URL: `https://api.aerosend.io`
- URL: `https://api.aerosend.io/api/v1/domain-burn/add-api-key`
- Auth: API key in header `X-API-Key`

Accepts one or more Smartlead or Instantly keys. Every key is checked first.
If any key is invalid or already connected, nothing is stored and the report
scan is not started. The response lists each key as VALID, INVALID, or DUPLICATE
with a clear message, and scan_started is false.

## Request body

- AddSequencerKeysRequest: One or more Smartlead/Instantly keys. A single key object is also accepted.
  - `keys` SequencerApiKeyRequest[], required: Keys to connect (1–20)
    - `sequencer` string, required: Sequencer: smartlead or instantly
    - `api_key` string, required: Sequencer API key
    - `account_name` string: Optional label for this sequencer account

## Response `200`

All keys are valid

- AddSequencerKeysApiResponse
  - `success` boolean: Success flag
  - `data` AddSequencerKeys: Result of connecting one or more sequencer API keys
    - `accepted` boolean: True only when every key was stored and a scan was started
    - `scanStarted` boolean: True only when data-ingestion-master /sync/publish was called
    - `message` string: Overall explanation of what happened
    - `keys` SequencerKeyResult[]
      - `index` integer: Position in the request keys array
      - `sequencer` string
      - `accountName` string: Account label from the request, if provided
      - `key` string: Masked key (last 4 characters)
      - `status` 'VALID' | 'INVALID' | 'DUPLICATE': valid, invalid, or duplicate
      - `message` string: Why this key was accepted or rejected
    - `scan` ScanScore: Domain Burn scan / report status for the authenticated client
      - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED': Scan / report status
      - `reportExists` boolean: True when a completed report is available (possibly from an earlier scan)
      - `nextStep` 'CONNECT_SEQUENCER' | 'WAIT' | 'VIEW_REPORT' | 'RETRY_SCAN': What the UI should do next
      - `message` string: Human readable explanation of the status
      - `startedAt` string, date-time: When the latest scan was started
      - `completedAt` string, date-time: When the latest report was produced
      - `sequencers` SequencerInfo[]: Connected sequencers (keys are never returned)
        - `sequencer` string
        - `connected` boolean
        - `accountCount` integer: Number of active API keys for this sequencer
        - `scanSupported` boolean: False when DBA ingestion cannot scan this sequencer yet
  - `timestamp` string: Response timestamp

## Other responses

- `400`: One or more keys are invalid. Nothing was stored.
- `401`: Unauthorized - Invalid or expired API key
- `409`: One or more keys are already connected. Nothing was stored.
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/aerosend/apis/aerosend-developer-api.md) · [All operations](https://skmtc.dev/aerosend/apis/aerosend-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aerosend/apis/aerosend-developer-api/revisions/9828eeb89b1f?raw)
