Outreach

Update campaign definition

Correct a campaign's definition — send only the fields you are changing.

An omitted field keeps its value; an empty string, empty list or null clears it — except name, which a campaign always has, so clearing it is a 422. An unknown field name is rejected with 422 rather than silently ignored, so a typo can never look like a successful write. Returns the full definition as it now stands.

Re-aiming costs leads. Changing target_role, target_geography, target_company_size, positive_criteria or negative_criteria is a retarget, exactly as in the app: the leads this campaign has not contacted yet are dropped and Explee searches again against the new targeting. Editing the offer or the email briefs does not — it only changes what is written to the leads still to come. Emails already sent are never affected.

The rule for this endpoint: anything a person can edit on the campaign in the app, you can edit here — with the exceptions below, each of which exists because the app validates it in a second step this endpoint cannot reproduce.

Read-only here: instructions and followup_instructions (the copy briefs — the app moderates them right after saving and shows you the verdict; this endpoint has no preview to show, and an unmoderated brief only fails later, at send time), target_url and reply_instructions (their own two-step save), keywords (Explee derives it; read-only in the app too) and followups (a project-level setting shared by every campaign of the project: sending the current values back is accepted, different ones are a 422). Budget has PATCH /public/api/v1/autogtm/campaigns/{campaign_id}/budget, status has start / stop. You can still SET the briefs when you create a campaign — POST /public/api/v1/autogtm/campaigns/import takes instructions, followup_instructions and language.

patch/public/api/v1/autogtm/campaigns/{campaign_id}

Request

  • Base URL: https://api.explee.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.explee.com/public/api/v1/autogtm/campaigns/{campaign_id}
  • Auth: APIKeyHeader (a scheme the document does not define)

Path parameters

campaign_idinteger required

Request body

namestring nullable

Campaign name.

offerstring nullable

What you offer this audience.

customer_problemstring nullable

The problem this audience has.

target_rolestring nullable

Who to reach at the prospect, by responsibility (e.g. "Head of Compliance"). Re-aims the campaign, exactly like target_geography. On a campaign built from an imported lead list (targeting_editable: false) it is saved with 200 and re-aims nothing — the uploaded list is the audience, so there is no search to re-run.

target_geographystring nullable

Target geographies, free text (e.g. "Spain, Portugal"). Re-aims the campaign: changing it drops the leads it has not contacted yet and makes Explee search again against the new targeting.

target_company_sizestring nullable

Target company size, free text (e.g. "10-200 employees"). Re-aims the campaign, exactly like target_geography.

positive_criteriastring[] nullable

Signals that qualify a company for this campaign. Re-aims the campaign, exactly like target_geography. On a campaign built from an imported lead list (targeting_editable: false) it is saved with 200 and re-aims nothing — the uploaded list is the audience, so there is no search to re-run.

negative_criteriastring[] nullable

Disqualifying signals — look-alikes that are NOT a fit. Re-aims the campaign, exactly like target_geography. On a campaign built from an imported lead list (targeting_editable: false) it is saved with 200 and re-aims nothing — the uploaded list is the audience, so there is no search to re-run.

example_clientsstring[] nullable

Recognizable companies that fit this ICP.

languagestring nullable

Language to write in: one of en-US, en-GB, de, fr, es, it, ja, pt, zh, ko, nl, id, tr, pl, ar, vi, th, ru, sv, he, hi, da, cs, ro, fi, hu, no, uk, el, sr, hr, or auto to pick per lead. Note the short form: de, not de-DE.

Response

Successful Response

idinteger required

Campaign identifier.

project_idinteger required

Project this campaign belongs to.

namestring nullable

Human-readable campaign name.

statusstring required

Raw lifecycle status: discovery, review, outreach, listening, error, archived.

status_reasonstring nullable

Why a listening campaign stopped sending — user_pause, budget_pause, lead_pool_exhausted, …

daily_limit_usdinteger nullable

Campaign's daily budget cap in USD.

target_urlstring nullable

Booking link used in the emails. Read-only here — it is gated and shared across the project.

offerstring nullable

What you offer this audience ("What you offer" in the app).

customer_problemstring nullable

The problem this audience has ("Customer problem").

target_rolestring nullable

Who to reach at the prospect, by responsibility ("Target role").

target_geographystring nullable

Target geographies, free text ("Target geography").

target_company_sizestring nullable

Target company size, free text.

positive_criteriastring[]

Signals that qualify a company for this campaign.

negative_criteriastring[]

Disqualifying signals — look-alikes that are NOT a fit.

example_clientsstring[]

Recognizable companies that fit this ICP.

keywordsstring nullable

Comma-separated search keywords. Read-only: derived by Explee from the fields above.

instructionsstring

Your brief for the first email. Empty = briefed from the project alone.

followup_instructionsstring

The shared brief for every follow-up in the sequence.

languagestring required

Language code the emails are written in; auto picks per lead.

reply_instructionsstring

How replies are answered. Project-level — shared by every campaign in the project, and read-only here; it is edited in the app.

targeting_editableboolean required

False for a campaign created from your own imported lead list: its audience is the list you uploaded, so the two SEARCH fields — target_geography and target_company_size — are locked (a write returns 409). target_role, positive_criteria and negative_criteria also shape the email copy, so they stay writable (200) and simply re-aim nothing. The offer and the email briefs stay editable either way.

Example response

{
  "id": 17518,
  "status": "outreach",
  "language": "auto",
  "schedule": {
    "days": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri"
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.