Scribeless
Campaigns

List campaigns

Get Scribeless campaigns available to the authenticated team.

List the campaigns that the API key can access. Use this endpoint to populate campaign selectors or inspect campaign configuration before creating recipients.

GET https://platform.scribeless.co/api/campaigns

Headers

X-API-Key: YOUR_API_KEY

Query parameters

ParameterTypeDescription
statusstringOptional. Filter by pending, ready, paused, stopped, shipped, or deleted.
frequencystringOptional. Filter by oneTime or recurring.

Example request

curl --request GET 'https://platform.scribeless.co/api/campaigns?status=pending' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

Successful requests return a top-level JSON array. The response is not wrapped in a data property.

Each campaign includes its core configuration, product and template summaries, recipient metrics, template variables, and the latest rendered recipient where available.

[
  {
    "id": "CAMPAIGN_ID",
    "name": "Customer follow-up",
    "status": "pending",
    "product_id": "PRODUCT_ID",
    "template_id": "TEMPLATE_ID",
    "delivery_method": "directMail",
    "frequency": "recurring",
    "shipping_address_id": null,
    "return_address_id": null,
    "include_envelope": true,
    "envelope_sealed": true,
    "stamp_on_envelope": true,
    "batch_individually": false,
    "stamp_class": null,
    "billing_method": "subscription",
    "subscription_id": null,
    "invoice_id": null,
    "team_id": "TEAM_ID",
    "created_at": "2026-01-01T10:00:00.000Z",
    "updated_at": "2026-01-01T10:00:00.000Z",
    "ready_at": null,
    "shipped_at": null,
    "deleted_at": null,
    "print_house_override_id": null,
    "tracking_email": "mail@example.com",
    "render_mode": "standard",
    "latest_recipient": {
      "id": "RECIPIENT_ID"
    },
    "template": {
      "id": "TEMPLATE_ID",
      "name": "Customer follow-up",
      "render_mode": "standard"
    },
    "return_address": null,
    "shipping_address": null,
    "product": {
      "id": "PRODUCT_ID",
      "name": "A6 postcard",
      "category": "postcard",
      "standard": "ISO",
      "alternate": null,
      "product_family": "handwritten"
    },
    "metrics": {
      "total": 1,
      "pending": 1,
      "invalid": 0,
      "ready": 0,
      "printing": 0,
      "shipped": 0,
      "delivered": 0,
      "deleted": 0
    },
    "cart": {
      "id": "CART_ID"
    },
    "variables": [
      {
        "id": "VARIABLE_ID",
        "context": "Custom 1",
        "label": "Custom 1",
        "mapper": "return recipient.variables?.custom1 ?? ''"
      }
    ],
    "directMailHandwritingWarning": null
  }
]

Notes

  • Omitting both query parameters returns all campaigns available to the authenticated team.
  • The response order is newest campaign first.
  • Use id as campaignId when calling POST /api/recipients.
  • Treat any non-2xx response as failed and inspect the response body for the error message.

Status codes

StatusMeaning
200Campaigns returned.
400An unsupported query parameter value was supplied.
401Missing, malformed, invalid, or unauthorized API key.
500Campaigns could not be fetched. Retry later or contact support if it persists.
Copyright © 2026