Campaigns API
These are the Campaigns endpoints of the Keila API.
For Keila Cloud, the base URL is https://app.keila.io.
All endpoints, unless stated differently, require Bearer authentication.
/api/v1/campaigns Index campaigns
Retrieve all campaigns from your project.
Responses
200 Campaign index response
- dataobject[]
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
- metaobject
/api/v1/campaigns Create Campaign
Request body
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - settingsobject required
- subjectstring required
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n"
Responses
200 Campaign response
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
/api/v1/campaigns/{id} Show Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Responses
200 Campaign response
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
/api/v1/campaigns/{id} Update Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Request body
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n"
Responses
200 Campaign response
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
/api/v1/campaigns/{id} Update Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Request body
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n"
Responses
200 Campaign response
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
/api/v1/campaigns/{id} Delete Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Responses
204 Campaign was deleted successfully or didn’t exist.
/api/v1/campaigns/{id}/actions/schedule Schedule Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Request body
- dataobject
- scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z"
Responses
200 Campaign response
- dataobject
- dataobject
Example:
{"books":[{"title":"Space Book","url":"books.books/spacebook"},{"title":"Earth Book","url":"books.books/earthbook"}]} - idstring
Campaign ID
Example:
"mc_12345" - inserted_atstring
Example:
"2026-05-25T08:53:38.470501Z" - json_bodyobject
Example:
{"blocks":[{"data":{"text":"Hello, I am a block campaign!"},"id":"ff0011","type":"paragraph"}]} - mjml_bodystring
Example:
"<mjml>\n <mj-body>\n <mj-section>\n <mj-column>\n <mj-text>Hello I’m an MJML campaign!</mj-text>\n </mj-column>\n </mj-section>\n </mj-body>\n</mjml>\n" - preview_textstring
Example:
"Hello, I am a preview campaign!" - scheduled_forstring
Example:
"2026-05-25T08:53:38.470496Z" - segment_idstring
Example:
"sgm_12345" - sender_idstring
Example:
"ms_12345" - sent_atstring
Example:
"2026-05-25T08:53:38.470480Z" - settingsobject
- subjectstring
Example:
"🚀 Our Space Book is Now Available!" - template_idstring
- text_bodystring
Example:
"Hey {{ contact.first_name }}, are you excited for our Space Book?\n\n[…]\n\n## All Books by Acme Space Corp:\n{% for book in campaign.data.books %}\n - {{ book.title }}: [More info]({{ book.url }})\n{% endfor %}\n" - updated_atstring
Example:
"2026-05-25T08:53:38.470504Z"
/api/v1/campaigns/{id}/actions/send Deliver Campaign
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Campaign ID |
Responses
202 Campaign delivery queued
- dataobject
- campaign_idstring
Campaign ID
Example:
"mc_12345" - delivery_queuedtrue
This indicates that the delivery of the campaign will be processed asynchronously. **Note**: If the campaign is invalid (e.g. missing a sender) or if your account has insufficient credits, the campaign will not be delivered regardless of the response from the endpoint.