Skip to main content

Get Campaign

Retrieve a specific campaign by UUID, including its audience and a readiness report.

Request

GET /campaigns/{uuid}

Path Parameters

ParameterTypeDescription
uuidstringCampaign's UUID

Query Parameters

All parameters are optional.

ParameterTypeDefaultDescription
includestring-Comma-separated list of extra sections to add to the response: stats, revenue, or both (include=stats,revenue). Unrecognised values are ignored.

Each section you name is added as an extra key on data. A section you don't request is omitted entirely — it is not returned as null — so the default response is unchanged. See Stats Object and Revenue Object.

Example Requests

Retrieve a campaign:

curl -X GET "https://email.easy.tools/api/v1/campaigns/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"

Retrieve a campaign with its engagement stats and attributed revenue:

curl -X GET "https://email.easy.tools/api/v1/campaigns/550e8400-e29b-41d4-a716-446655440000?include=stats,revenue" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"

Response

Success Response (200 OK)

{
"data": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Spring Sale",
"status": "draft",
"subject": "Up to 40% off this week",
"preheader": "Our biggest sale of the season",
"from_name": "Acme",
"reply_to": "support@acme.com",
"from_identity": "8f14e45f-ceea-467a-9575-1a1b2c3d4e5f",
"from_email": "hello@acme.com",
"content": "## Spring sale\n\nUp to **40% off**. [Shop now](https://acme.com/sale)",
"content_editable_via_api": true,
"content_overwrite_required": false,
"audience": {
"list_uuid": "660e8400-e29b-41d4-a716-446655440001",
"segment_uuid": null
},
"readiness": {
"can_send": true,
"missing": []
},
"created_at": "2026-06-24T10:00:00Z",
"updated_at": "2026-06-24T10:05:00Z",
"last_updated_at": "2026-06-24T10:05:00Z"
}
}

When include names stats and/or revenue, the matching sections are added to data:

{
"data": {
"uuid": "53a8ae7a-9c90-4451-960d-ca7e816cb9cf",
"name": "Spring Sale",
"status": "sent",
"...": "all the usual campaign detail fields",
"stats": {
"sends": 1240,
"opens": 642,
"clicks": 118,
"unsubscribes": 7,
"complaints": 1,
"open_rate": 0.5177,
"click_rate": 0.0952
},
"revenue": [
{
"amount": 13600,
"currency": "usd"
},
{
"amount": 34900,
"currency": "pln"
}
]
}
}

Response Fields

FieldTypeDescription
uuidstringCampaign's unique identifier
namestringCampaign name
statusstringCurrent status (see Statuses)
subjectstring|nullEmail subject line. null until set.
preheaderstring|nullPreview text shown after the subject. null until set.
from_namestring|nullSender display name. null until set.
reply_tostring|nullReply-to email address. null until set.
from_identitystring|nullUUID of the sending identity the campaign sends from. null until set.
from_emailstring|nullEmail address of the selected sending identity. null when no identity is set.
contentstring|nullThe email body as Markdown, or null — either no body is set, or the body uses layout with no Markdown form (distinguish via content_editable_via_api). See Campaign body.
content_editable_via_apibooleanfalse when the body uses layout the API can't author, which makes the returned content a lossy approximation. See Campaign body.
content_overwrite_requiredbooleantrue when replacing the body with content requires overwrite: true. See Campaign body.
audienceobjectThe campaign's recipients. See Audience.
readinessobjectWhether the campaign is ready to send. See Readiness.
created_atstringISO 8601 timestamp (UTC)
updated_atstringISO 8601 timestamp (UTC)
last_updated_atstring|nullISO 8601 timestamp (UTC) the campaign was last edited.
statsobjectEngagement statistics. Only present when stats is named in include. See Stats Object.
revenuearrayAttributed revenue, one entry per currency. Only present when revenue is named in include. See Revenue Object.

The audience and readiness objects have the fields described in Audience and Readiness.

Stats Object

Present only when stats is named in include.

FieldTypeDescription
sendsintegerNumber of messages sent.
opensintegerNumber of messages opened.
clicksintegerTotal number of link clicks.
unsubscribesintegerNumber of recipients who unsubscribed.
complaintsintegerNumber of spam complaints.
open_ratenumberopens ÷ sends, a ratio between 0 and 1 rounded to 4 decimals (0 when sends is 0). Multiply by 100 for a percentage.
click_ratenumberclicks ÷ sends, a ratio between 0 and 1 rounded to 4 decimals (0 when sends is 0). Multiply by 100 for a percentage.

Revenue Object

Present only when revenue is named in include. An array with one entry per currency the campaign has attributed revenue in, or an empty array [] when it has none.

FieldTypeDescription
amountintegerRevenue in the currency's minor units (for example cents or grosze). Divide by 100 for the major-unit value.
currencystringLowercase ISO 4217 currency code, e.g. "usd" or "pln".

Error Responses

Not Found Error (404)

{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Campaign with UUID '550e8400-e29b-41d4-a716-446655440000' not found"
}
}