Campaign Periods API
Campaign periods represent a date-bounded collection window within a campaign.
Endpoints
GET /api/v1/campaigns/:campaign_id/campaign_periodsPOST /api/v1/campaigns/:campaign_id/campaign_periodsGET /api/v1/campaign_periods/:idPATCH /api/v1/campaign_periods/:idGET /api/v1/campaign_periods/:campaign_period_id/submissionsPOST /api/v1/campaign_periods/:campaign_period_id/submissions
Delete: there is currently no DELETE /api/v1/campaign_periods/:id endpoint.
Filtering, Sorting, Include
- Filters:
label,status,starts_on,ends_on,campaign_id - Sort fields:
id,label,status,starts_on,ends_on,created_at,updated_at - Include:
campaign,submissions,nudges - Valid
statusvalues:open,closed
GET /api/v1/campaigns/:campaign_id/campaign_periods
curl -X GET "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods?filter[status]=open&sort=-starts_on&include=submissions" \
-H "Accept: application/json" \
-H "X-API-Key: csb_live_your_token_here"
{
"data": [
{
"id": "11",
"type": "campaign_periods",
"attributes": {
"label": "Week 10",
"starts_on": "2026-03-02",
"ends_on": "2026-03-08",
"status": "open",
"created_at": "2026-03-02T09:15:00.000Z",
"updated_at": "2026-03-02T09:15:00.000Z"
},
"relationships": {
"campaign": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/11/relationships/campaign",
"related": "https://cases.shipmentbot.com/api/v1/campaigns/2"
},
"data": { "id": "2", "type": "campaigns" }
},
"submissions": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/11/relationships/submissions",
"related": "https://cases.shipmentbot.com/api/v1/campaign_periods/11/submissions"
},
"data": [{ "id": "15", "type": "submissions" }]
},
"nudges": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/11/relationships/nudges",
"related": "https://cases.shipmentbot.com/api/v1/nudges?filter%5Bcampaign_period_id%5D=11"
},
"data": [{ "id": "21", "type": "nudges" }]
}
},
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/11"
}
}
],
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods?page%5Bnumber%5D=1&page%5Bsize%5D=25",
"first": "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods?page%5Bnumber%5D=1&page%5Bsize%5D=25",
"last": "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods?page%5Bnumber%5D=1&page%5Bsize%5D=25",
"next": null,
"prev": null
},
"meta": {
"page": {
"number": 1,
"size": 25,
"total_records": 1,
"total_pages": 1
}
}
}
POST /api/v1/campaigns/:campaign_id/campaign_periods
curl -X POST "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods" \
-H "Content-Type: application/json" \
-H "X-API-Key: csb_live_your_token_here" \
-d '{
"data": {
"type": "campaign_periods",
"attributes": {
"label": "Week 12",
"starts_on": "2026-03-16",
"ends_on": "2026-03-22",
"status": "open"
}
}
}'
{
"data": {
"id": "13",
"type": "campaign_periods",
"attributes": {
"label": "Week 12",
"starts_on": "2026-03-16",
"ends_on": "2026-03-22",
"status": "open",
"created_at": "2026-03-05T18:47:00.000Z",
"updated_at": "2026-03-05T18:47:00.000Z"
},
"relationships": {
"campaign": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/campaign",
"related": "https://cases.shipmentbot.com/api/v1/campaigns/2"
},
"data": { "id": "2", "type": "campaigns" }
},
"submissions": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/submissions",
"related": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/submissions"
},
"data": []
},
"nudges": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/nudges",
"related": "https://cases.shipmentbot.com/api/v1/nudges?filter%5Bcampaign_period_id%5D=13"
},
"data": []
}
},
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13"
}
},
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13"
},
"meta": {}
}
GET /api/v1/campaign_periods/:id
curl -X GET "https://cases.shipmentbot.com/api/v1/campaign_periods/13?include=campaign,submissions,nudges" \
-H "Accept: application/json" \
-H "X-API-Key: csb_live_your_token_here"
{
"data": {
"id": "13",
"type": "campaign_periods",
"attributes": {
"label": "Week 12",
"starts_on": "2026-03-16",
"ends_on": "2026-03-22",
"status": "open",
"created_at": "2026-03-05T18:47:00.000Z",
"updated_at": "2026-03-05T18:47:00.000Z"
},
"relationships": {
"campaign": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/campaign",
"related": "https://cases.shipmentbot.com/api/v1/campaigns/2"
},
"data": { "id": "2", "type": "campaigns" }
},
"submissions": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/submissions",
"related": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/submissions"
},
"data": []
},
"nudges": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/nudges",
"related": "https://cases.shipmentbot.com/api/v1/nudges?filter%5Bcampaign_period_id%5D=13"
},
"data": []
}
},
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13"
}
},
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13?include=campaign,submissions,nudges"
},
"meta": {}
}
PATCH /api/v1/campaign_periods/:id
curl -X PATCH "https://cases.shipmentbot.com/api/v1/campaign_periods/13" \
-H "Content-Type: application/json" \
-H "X-API-Key: csb_live_your_token_here" \
-d '{
"data": {
"type": "campaign_periods",
"id": "13",
"attributes": {
"status": "closed",
"label": "Week 12 (Closed)"
}
}
}'
{
"data": {
"id": "13",
"type": "campaign_periods",
"attributes": {
"label": "Week 12 (Closed)",
"starts_on": "2026-03-16",
"ends_on": "2026-03-22",
"status": "closed",
"created_at": "2026-03-05T18:47:00.000Z",
"updated_at": "2026-03-05T18:48:22.000Z"
},
"relationships": {
"campaign": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/campaign",
"related": "https://cases.shipmentbot.com/api/v1/campaigns/2"
},
"data": { "id": "2", "type": "campaigns" }
},
"submissions": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/submissions",
"related": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/submissions"
},
"data": []
},
"nudges": {
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13/relationships/nudges",
"related": "https://cases.shipmentbot.com/api/v1/nudges?filter%5Bcampaign_period_id%5D=13"
},
"data": []
}
},
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13"
}
},
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/13"
},
"meta": {}
}
Nested Submissions Routes
Campaign period submissions are fully documented on Submissions API.
curl -X GET "https://cases.shipmentbot.com/api/v1/campaign_periods/13/submissions" \
-H "X-API-Key: csb_live_your_token_here"
curl -X POST "https://cases.shipmentbot.com/api/v1/campaign_periods/13/submissions" \
-H "Content-Type: application/json" \
-H "X-API-Key: csb_live_your_token_here" \
-d '{
"data": {
"type": "submissions",
"attributes": {
"status": "draft",
"situation": "Example situation",
"problem": "Example problem",
"implication": "Example implication",
"solution": "Example solution"
},
"relationships": {
"employee": {
"data": { "type": "employees", "id": "4" }
}
}
}
}'
Error Examples
404 Campaign Period Not Found
{
"data": null,
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaign_periods/999999"
},
"meta": {},
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Campaign period not found"
}
]
}
422 Validation Error (date range)
{
"data": null,
"included": [],
"links": {
"self": "https://cases.shipmentbot.com/api/v1/campaigns/2/campaign_periods"
},
"meta": {},
"errors": [
{
"status": "422",
"title": "Validation Error",
"detail": "Ends on must be on or after starts_on",
"source": {
"pointer": "/data/attributes/ends_on"
}
}
]
}