Skip to main content
GET
/
campaigns
/
{campaignId}
Get campaign
curl --request GET \
  --url https://inboxapp.com/api/v1/campaigns/{campaignId} \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "name": "<string>",
  "description": null,
  "status": "draft",
  "dryRun": true,
  "targetsCount": 123,
  "contactedCount": 123,
  "repliesCount": 123,
  "completionRate": 123,
  "replyRate": 123,
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2025-04-28T14:11:10.000Z",
  "pausedAt": null,
  "completedAt": null,
  "lastStartedAt": "2025-04-02T13:45:00.000Z",
  "type": "<unknown>",
  "hourlyMessageRate": 30,
  "scheduleTimezone": "<string>",
  "scheduleHours": {},
  "estimatedTargets": 123,
  "isHydrating": true,
  "isBuildingPlan": true,
  "steps": [
    {
      "id": "<string>",
      "rank": 123,
      "type": "message",
      "data": {
        "segments": [
          {
            "type": "static",
            "text": "<string>"
          }
        ]
      },
      "campaignVersion": 123
    }
  ],
  "lists": [
    {
      "listId": "<string>",
      "exclude": false
    }
  ],
  "accountLinkIds": [
    "<string>"
  ],
  "automations": [
    {
      "id": "<string>",
      "trigger": "<unknown>",
      "action": "<unknown>",
      "actionData": {
        "statusId": "<string>"
      },
      "enabled": true
    }
  ],
  "customVariables": {
    "company-name": {
      "displayName": "Company name",
      "description": null
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.inboxapp.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

campaignId
string
required

The ID of the campaign to retrieve

Pattern: ^[0-9a-z]+$

Response

200 - application/json

OK

id
string
required
Pattern: ^[0-9a-z]+$
Example:

"usdjpdql3f90seqk13rwuo7z"

name
string
required
Example:

"Q1 SaaS founders outreach"

description
string | null
required
Example:

null

status
enum<string>
required
Available options:
draft,
active,
paused,
completed
Example:

"active"

dryRun
boolean
required

Whether the campaign is in dry run mode. This value is always false in production.

Example:

false

targetsCount
number
required

The number of prospects targeted by the campaign. While isHydrating is true, this number may not yet be final as prospects are still being evaluated for reachability. During hydration, refer to estimatedTargets for a projected total.

Example:

4723

contactedCount
number
required

The number of prospects that have been dispatched by the campaign. Note: this does not guarantee that every prospect received a message. In rare cases a prospect's sequence may fail (e.g. due to platform spam filters blocking the outreach) but they are still counted as contacted so the campaign can progress to completion.

Example:

2361

repliesCount
number
required

The number of unique prospects who replied to the campaign. Each prospect is counted at most once regardless of how many messages they send back.

Example:

118

completionRate
number
required

Fraction of targets that have been contacted. 0 means none, 1 means all targets have been reached.

Example:

0.5

replyRate
number
required

Fraction of contacted targets that replied. 0 means no replies, 1 means every contacted target replied.

Example:

0.05

createdAt
string<date-time>
required
Example:

"2025-04-02T13:44:10.000Z"

updatedAt
string<date-time> | null
required
Example:

"2025-04-28T14:11:10.000Z"

pausedAt
string<date-time> | null
required
Example:

null

completedAt
string<date-time> | null
required
Example:

null

lastStartedAt
string<date-time> | null
required
Example:

"2025-04-02T13:45:00.000Z"

type
any
required

The campaign type.

Example:

"sequence"

hourlyMessageRate
integer
required

Maximum messages sent per hour per account. Note: going above 20 DMs per hour is not recommended for account safety.

Required range: 1 <= x <= 60
Example:

8

scheduleTimezone
string
required

IANA timezone used for the sending schedule.

Example:

"America/New_York"

scheduleHours
object
required

Sending windows per day of the week. Keys are 0 (Sunday) through 6 (Saturday). Values are minute-of-day ranges. Omit a day to skip sending that day.

Example:
{
"1": { "start": 540, "end": 1260 },
"2": { "start": 540, "end": 1260 },
"3": { "start": 540, "end": 1260 },
"4": { "start": 540, "end": 1260 },
"5": { "start": 540, "end": 1260 }
}
estimatedTargets
number
required

Estimated number of reachable targets based on historical reachability rates. This value is most useful while isHydrating is true. Once hydration completes, targetsCount reflects the true number of contactable prospects.

Example:

3664

isHydrating
boolean
required

Whether the campaign is currently evaluating prospect reachability. Hydration determines which prospects can actually receive DMs from your linked accounts. This runs in the background as the campaign executes and may take a while for large campaigns. Once false, targetsCount is the final number of contactable prospects and estimatedTargets is no longer needed.

Example:

true

isBuildingPlan
boolean
required

Whether the campaign is currently building its execution plan. During this time, prospects from the included lists are being processed and assigned to sender accounts. This typically takes a few seconds but may take several minutes for very large campaigns.

Example:

false

steps
(Message step · object | Delay step · object | Like tweet step · object)[]
required

Ordered sequence of steps in the campaign.

A single step in the campaign sequence. Steps are versioned alongside the campaign: each time you update a campaign's steps, a new campaignVersion is created and the previous steps are preserved. The active sequence is always the set of steps with the highest campaignVersion. All earlier versions are historical and remain accessible — when listing campaign targets, each target records the campaignVersion that was in effect when it was dispatched.

Example:
[
{
"id": "l2cecmj26reun2ybwrvgjl1u",
"type": "message",
"rank": 0,
"data": {
"segments": [
{
"type": "variation",
"options": ["Hey", "Hello", "How's it going"]
},
{ "type": "static", "text": " " },
{ "type": "variable", "name": "first-name" },
{
"type": "static",
"text": ", how are you?"
}
]
}
},
{
"id": "imra080h2jp8zf2mm62y6h0g",
"type": "delay",
"rank": 1,
"data": { "delaySeconds": 604800, "unit": "days" }
},
{
"id": "sgauh7izipa7mbajc9qhv5h4",
"type": "message",
"rank": 2,
"data": {
"segments": [
{
"type": "static",
"text": "Get a chance to see my previous message?"
}
]
}
}
]
lists
object[]
required

Lists included in or excluded from the campaign targeting.

Example:
[
{
"listId": "k8f2mj26reun2ybwrvgjl1u",
"exclude": false
},
{
"listId": "p3n7xq92hd4sk1atcw8oe5fr",
"exclude": true
}
]

Account link IDs assigned to send messages for this campaign.

Pattern: ^[0-9a-z]+$
Example:
["r4t9vw15jm6bn3yxcf2dq8ek"]
automations
(Set status automation · object | Set tags automation · object)[]
required

Automations that fire when prospects interact with the campaign.

Automation triggered when a prospect replies to the campaign.

Example:
[
{
"id": "a1b2c3d4e5f6g7h8i9j0k1l2",
"trigger": "prospectFirstReply",
"action": "setStatus",
"actionData": { "statusId": "m3n4o5p6q7r8s9t0u1v2w3x4" },
"enabled": true
}
]
customVariables
object
required

Custom variables available for use in campaign message templates. All variables referenced in message step segments must exist in this map, otherwise the campaign will fail validation. The variable "first-name" is automatically available for every campaign and does not need to be defined here.

Example:
{
"company-name": {
"displayName": "Company name",
"description": null
}
}