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.

get /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
post /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"

get /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"

put /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"

patch /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"

delete /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.

post /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"

post /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.