Dashboard

Campaigns

Auth Required

Update Campaign

PATCHhttps://api.inboxjot.com/v1/campaigns/{campaign_id}

Updates the fields you send and keeps the others. Only a draft or scheduled campaign can change. The change shows live to anyone who has the campaign open. Needs a Full key. A key limited to one domain answers 403. Send an optional Idempotency-Key header to retry safely. See Idempotency.

PATCH/v1/campaigns/{campaign_id}
curl -X PATCH https://api.inboxjot.com/v1/campaigns/cpg_06d2mfk8r7hm4ps9wb2kd \
  -H "Authorization: Bearer $INBOXJOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Scheduled sends are here"
  }'
{
  "id": "cpg_06d2mfk8r7hm4ps9wb2kd",
  "name": "October product update",
  "status": "draft",
  "from": "Acme <hello@acme.dev>",
  "reply_to": null,
  "subject": "Scheduled sends are here",
  "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": null,
  "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"
}

Returns the updated campaign.

Path Parameters

campaign_idstringrequired

The campaign id.

Body Parameters

namestring | null

The campaign name, 1 to 200 characters.

fromstring | null

The from address, up to 320 characters. It must be on a verified domain before you send.

reply_tostring | null

The reply-to address. Send null to clear it.

subjectstring | null

The subject, up to 998 characters, without line breaks.

preheaderstring | null

The preview text, up to 500 characters, without line breaks.

htmlstring | null

The email as HTML. Inboxjot turns it into editor content, so the campaign stays editable in the dashboard.

contentobject | null

The editor document, as the dashboard saves it. Most callers send html instead. When you send both, html wins.

template_idstring | null

A template to start from. Send null to unlink it. It must exist.

include_segment_idsstring[] | null

The segments to send to, up to 50. Each one must exist.

exclude_segment_idsstring[] | null

The segments to leave out, up to 50.

topic_idstring | null

The topic the campaign is about. Only contacts subscribed to it get the campaign. Defaults to the default topic.

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

PATCH/v1/campaigns/{campaign_id}
curl -X PATCH https://api.inboxjot.com/v1/campaigns/cpg_06d2mfk8r7hm4ps9wb2kd \
  -H "Authorization: Bearer $INBOXJOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Scheduled sends are here"
  }'
{
  "id": "cpg_06d2mfk8r7hm4ps9wb2kd",
  "name": "October product update",
  "status": "draft",
  "from": "Acme <hello@acme.dev>",
  "reply_to": null,
  "subject": "Scheduled sends are here",
  "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": null,
  "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"
}

Returns the updated campaign.