Dashboard

Campaigns

Auth Required

Send Campaign

POSThttps://api.inboxjot.com/v1/campaigns/{campaign_id}/send

Sends a draft campaign now, or schedules it. A scheduled_at in the future schedules the campaign. Without it, or with a time in the past, sending starts now. Call it again on a scheduled campaign to change the time or send it now. The response is 202, because the emails go out from a queue after it returns. Needs a Full key. A key limited to one domain answers 403. Send an optional Idempotency-Key header to retry safely. See Idempotency.

Before it sends, Inboxjot checks that the from address is on a verified domain, the campaign has a subject and content, your postal address is set in Settings, and at least one subscribed contact matches the audience. The daily sending limit and domain warmup still apply, so a large campaign can pause and go on the next day. paused_reason then says why.

POST/v1/campaigns/{campaign_id}/send
curl -X POST https://api.inboxjot.com/v1/campaigns/cpg_06d2mfk8r7hm4ps9wb2kd/send \
  -H "Authorization: Bearer $INBOXJOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduled_at": "2026-10-22T09:00:00Z"
  }'
{
  "id": "cpg_06d2mfk8r7hm4ps9wb2kd",
  "name": "October product update",
  "status": "scheduled",
  "from": "Acme <hello@acme.dev>",
  "reply_to": null,
  "subject": "What’s new in October",
  "preheader": "Scheduled sends are here",
  "html": "<!DOCTYPE html><html>…</html>",
  "text": "Hi Suhasinee, scheduled sends are here…",
  "template_id": null,
  "template": null,
  "include_segment_ids": [
    "seg_06d2mfk8r2kd7fq4mx9ab"
  ],
  "include_segments": [
    {
      "id": "seg_06d2mfk8r2kd7fq4mx9ab",
      "name": "Customers"
    }
  ],
  "exclude_segment_ids": [],
  "exclude_segments": [],
  "topic_id": "top_06d2mfk8r6pn2tc8yw3hd",
  "topic": {
    "id": "top_06d2mfk8r6pn2tc8yw3hd",
    "name": "Product updates"
  },
  "audience_count": null,
  "queued_count": 0,
  "skipped_count": 0,
  "paused_reason": null,
  "failure_reason": null,
  "scheduled_at": "2026-10-22T09:00:00.000Z",
  "started_at": null,
  "completed_at": null,
  "warmup_next_limit": null,
  "created_at": "2026-10-21T09:00:00.000Z",
  "updated_at": "2026-10-21T09:00:00.000Z"
}

Accepted. The campaign is scheduled or sending.

Path Parameters

campaign_idstringrequired

The campaign id.

Body Parameters

Response

idstring

The campaign id.

namestring

The campaign name.

statusstring

draft, scheduled, sending, paused, failed, sent or canceled.

fromstring

The from address.

reply_tostring | null

The reply-to address.

subjectstring

The subject.

preheaderstring

The preview text.

htmlstring | null

The rendered HTML, or null before there is content.

textstring | null

The plain text version.

template_idstring | null

The id of the linked template.

templateobject | null

The linked template.

include_segment_idsstring[]

The ids of the segments it sends to.

include_segmentsobject[]

The segments it sends to.

exclude_segment_idsstring[]

The ids of the segments it leaves out.

exclude_segmentsobject[]

The segments it leaves out.

topic_idstring

The id of the topic.

topicobject | null

The topic.

audience_countinteger | null

How many contacts the campaign goes to, once it starts.

queued_countinteger

Emails queued so far.

skipped_countinteger

Contacts skipped, such as suppressed addresses.

paused_reasonstring | null

Why a paused campaign stopped: manual, daily_limit, warmup, sending_paused or domain_unverified.

failure_reasonstring | null

Why a failed campaign stopped.

scheduled_atstring | null

When a scheduled campaign starts.

started_atstring | null

When sending started.

completed_atstring | null

When sending finished.

warmup_next_limitinteger | null

The daily limit of the next warmup step when domain warmup paused the campaign, otherwise null.

created_atstring

When it was created.

updated_atstring

When it last changed.

Responses

POST/v1/campaigns/{campaign_id}/send
curl -X POST https://api.inboxjot.com/v1/campaigns/cpg_06d2mfk8r7hm4ps9wb2kd/send \
  -H "Authorization: Bearer $INBOXJOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduled_at": "2026-10-22T09:00:00Z"
  }'
{
  "id": "cpg_06d2mfk8r7hm4ps9wb2kd",
  "name": "October product update",
  "status": "scheduled",
  "from": "Acme <hello@acme.dev>",
  "reply_to": null,
  "subject": "What’s new in October",
  "preheader": "Scheduled sends are here",
  "html": "<!DOCTYPE html><html>…</html>",
  "text": "Hi Suhasinee, scheduled sends are here…",
  "template_id": null,
  "template": null,
  "include_segment_ids": [
    "seg_06d2mfk8r2kd7fq4mx9ab"
  ],
  "include_segments": [
    {
      "id": "seg_06d2mfk8r2kd7fq4mx9ab",
      "name": "Customers"
    }
  ],
  "exclude_segment_ids": [],
  "exclude_segments": [],
  "topic_id": "top_06d2mfk8r6pn2tc8yw3hd",
  "topic": {
    "id": "top_06d2mfk8r6pn2tc8yw3hd",
    "name": "Product updates"
  },
  "audience_count": null,
  "queued_count": 0,
  "skipped_count": 0,
  "paused_reason": null,
  "failure_reason": null,
  "scheduled_at": "2026-10-22T09:00:00.000Z",
  "started_at": null,
  "completed_at": null,
  "warmup_next_limit": null,
  "created_at": "2026-10-21T09:00:00.000Z",
  "updated_at": "2026-10-21T09:00:00.000Z"
}

Accepted. The campaign is scheduled or sending.