Preo
  • Homepage
  • About
Apps
  • Dashboard
  • App Store
  • Google Play
Social
  • LinkedIn

© 2026 Preo ApS

  • Integration
  • API
Information
Auth
    Get user infoget
Editions
    List editionsgetCreate editionpostGet edition detailsgetUpdate editionpatchDuplicate editionpostGet edition field choicesgetRun edition healthcheckget
Orders
    List ordersgetRetrieve order detailsget
Purchases
    Retrieve purchase detailsgetCreate refund request for purchasepost
User
    List usersgetRetrieve usergetPartially update userpatch
Refunds
    Create refund request for purchasepostList refund requestsgetCreate refund requestpostRetrieve refund request detailsgetApprove refund requestpostReject refund requestpost
Files
    List filesgetUpload filepostGet file detailsgetDelete filedeleteUpdate file metadatapatch
Data Imports
    List data importsgetCreate data importpostGet data import detailsgetUpdate data importpatchCancel data importpostList column mappingsgetUpdate column mappingspatchPreview import ordersgetProcess column mappingspostList product mappingsgetUpdate product mappingspatchStart import processpostValidate column mappingspostImport external orderspost
Campaigns
    List campaignsgetCreate campaignpostRetrieve campaigngetDelete campaigndeleteUpdate campaignpatchCancel campaignpostSchedule campaignpostSend campaign nowpostGet campaign statsget
Consents
    List consentsgetCreate consentpostRetrieve consentgetDelete consentdeleteUpdate consentpatch
Email Messages
    List email messagesgetCreate email messagepostGet email message detailsgetDelete email messagedeleteUpdate email messagepatchAdopt template to editionpostDuplicate email messagepostPreview emailpostGet template variablesget
Segments
    List segmentsgetCreate segmentpostRetrieve segmentgetDelete segmentdeleteUpdate segmentpatchExport segment users as CSVgetRecalculate segmentpostReset stuck segment to draftpostGet CEL context schema and dynamic valuesgetValidate CEL expressionpost
Webhooks
    List webhook endpointsgetCreate webhook endpointpostRetrieve webhook endpointgetDelete webhook endpointdeleteUpdate webhook endpointpatchList deliveries for webhook endpointgetGet delivery detailgetRetry a failed deliverypostRotate webhook secretpost
Schemas
Preo API
Preo API

Campaigns

Endpoint

List campaigns

GET
https://api.preo.dev
/v1/campaigns

Manage campaigns for sending email or SMS to segments.

List campaigns › query Parameters

channel
​string · enum

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
edition_id
​string
ordering
​string[] · style: form

Ordering

  • created - Created
  • -created - Created (descending)
  • modified - Modified
  • -modified - Modified (descending)
  • name - Name
  • -name - Name (descending)
  • scheduled_at - Scheduled at
  • -scheduled_at - Scheduled at (descending)
  • total_recipients - Total recipients
  • -total_recipients - Total recipients (descending)
Enum values:
-created
-modified
-name
-scheduled_at
-total_recipients
created
modified
name
organization_id
​string
page
​integer

A page number within the paginated result set.

page_size
​integer

Number of results to return per page (default: 100).

search
​string

Search by campaign name

status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
calculating
cancelled
draft
failed
scheduled
sending
sent

List campaigns › Responses

200
count
​integer · required
​object[] · required
next
​string · uri
previous
​string · uri
GET/v1/campaigns
curl --request GET \ --url https://api.preo.dev/v1/campaigns
shell
Example Responses
{ "count": 123, "next": "http://api.example.org/accounts/?page=4", "previous": "http://api.example.org/accounts/?page=2", "results": [ { "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z" } ] }
json
application/json

Create campaign

POST
https://api.preo.dev
/v1/campaigns

Manage campaigns for sending email or SMS to segments.

Create campaign › Request Body

organization_id
​string · required
edition_id
​string · required
segment_id
​string · required
name
​string · maxLength: 255 · required
channel
​string · enum · required
  • email - Email
  • sms - SMS
Enum values:
email
sms
email_message_id
​string | null
​object

Create campaign › Responses

id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

POST/v1/campaigns
curl --request POST \ --url https://api.preo.dev/v1/campaigns \ --header 'Content-Type: application/json' \ --data ' { "organization_id": "organization_id", "edition_id": "edition_id", "segment_id": "segment_id", "name": "name", "channel": "email", "email_message_id": "email_message_id", "sms_body": { "key": "string" } } '
shell
Example Request Body
{ "organization_id": "organization_id", "edition_id": "edition_id", "segment_id": "segment_id", "name": "name", "channel": "email", "email_message_id": "email_message_id", "sms_body": { "key": "string" } }
json
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Retrieve campaign

GET
https://api.preo.dev
/v1/campaigns/{id}

Manage campaigns for sending email or SMS to segments.

Retrieve campaign › path Parameters

id
​string · required

A unique value identifying this Campaign.

Retrieve campaign › Responses

200
id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

GET/v1/campaigns/{id}
curl --request GET \ --url https://api.preo.dev/v1/campaigns/:id
shell
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Delete campaign

DELETE
https://api.preo.dev
/v1/campaigns/{id}

Manage campaigns for sending email or SMS to segments.

Delete campaign › path Parameters

id
​string · required

A unique value identifying this Campaign.

Delete campaign › Responses

No response body

No data returned
DELETE/v1/campaigns/{id}
curl --request DELETE \ --url https://api.preo.dev/v1/campaigns/:id
shell
Example Responses
No example specified for this content type

Update campaign

PATCH
https://api.preo.dev
/v1/campaigns/{id}

Manage campaigns for sending email or SMS to segments.

Update campaign › path Parameters

id
​string · required

A unique value identifying this Campaign.

Update campaign › Request Body

name
​string · maxLength: 255
segment_id
​string
channel
​string · enum
  • email - Email
  • sms - SMS
Enum values:
email
sms
email_message_id
​string | null
​object

Update campaign › Responses

200
id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

PATCH/v1/campaigns/{id}
curl --request PATCH \ --url https://api.preo.dev/v1/campaigns/:id \ --header 'Content-Type: application/json' \ --data ' { "name": "name", "segment_id": "segment_id", "channel": "email", "email_message_id": "email_message_id", "sms_body": { "key": "string" } } '
shell
Example Request Body
{ "name": "name", "segment_id": "segment_id", "channel": "email", "email_message_id": "email_message_id", "sms_body": { "key": "string" } }
json
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Cancel campaign

POST
https://api.preo.dev
/v1/campaigns/{id}/cancel

Manage campaigns for sending email or SMS to segments.

Cancel campaign › path Parameters

id
​string · required

A unique value identifying this Campaign.

Cancel campaign › Responses

200
id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

POST/v1/campaigns/{id}/cancel
curl --request POST \ --url https://api.preo.dev/v1/campaigns/:id/cancel
shell
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Schedule campaign

POST
https://api.preo.dev
/v1/campaigns/{id}/schedule

Manage campaigns for sending email or SMS to segments.

Schedule campaign › path Parameters

id
​string · required

A unique value identifying this Campaign.

Schedule campaign › Request Body

scheduled_at
​string · date-time · required

Schedule campaign › Responses

200
id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

POST/v1/campaigns/{id}/schedule
curl --request POST \ --url https://api.preo.dev/v1/campaigns/:id/schedule \ --header 'Content-Type: application/json' \ --data ' { "scheduled_at": "2024-08-25T15:00:00Z" } '
shell
Example Request Body
{ "scheduled_at": "2024-08-25T15:00:00Z" }
json
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Send campaign now

POST
https://api.preo.dev
/v1/campaigns/{id}/send-now

Manage campaigns for sending email or SMS to segments.

Send campaign now › path Parameters

id
​string · required

A unique value identifying this Campaign.

Send campaign now › Responses

200
id
​string · readOnly · required
name
​string · maxLength: 255 · required

Human-readable campaign name

organization_id
​string | null · readOnly · required
edition_id
​string | null · readOnly · required
​object · readOnly · required
channel
​string · enum · required

Delivery channel

  • email - Email
  • sms - SMS
Enum values:
email
sms
created
​string · date-time · readOnly · required
modified
​string · date-time · readOnly · required
email_message_id
​string | null · readOnly · required
sms_body
​string · readOnly · required
status
​string · enum

Current campaign status

  • draft - Draft
  • scheduled - Scheduled
  • calculating - Calculating Segment
  • sending - Sending
  • sent - Sent
  • failed - Failed
  • cancelled - Cancelled
Enum values:
draft
scheduled
calculating
sending
sent
failed
cancelled
scheduled_at
​string | null · date-time

When to send (stored UTC, displayed in edition timezone)

total_recipients
​integer · min: 0 · max: 2147483647

Total number of recipients to send to

sent_count
​integer · min: 0 · max: 2147483647

Number of messages successfully sent

failed_count
​integer · min: 0 · max: 2147483647

Number of messages that failed to send

user_count
​integer · min: 0 · max: 2147483647

Snapshot count of users at send time

error_message
​string

Error details if campaign failed

started_at
​string | null · date-time

When sending started

completed_at
​string | null · date-time

When sending finished

POST/v1/campaigns/{id}/send-now
curl --request POST \ --url https://api.preo.dev/v1/campaigns/:id/send-now
shell
Example Responses
{ "id": "id", "name": "name", "organization_id": "organization_id", "edition_id": "edition_id", "segment": { "id": "id", "name": "name", "communication_type": "transactional", "communication_channel": "any", "status": "draft", "user_count": 0 }, "channel": "email", "status": "draft", "scheduled_at": "2024-08-25T15:00:00Z", "total_recipients": 0, "sent_count": 0, "failed_count": 0, "created": "2024-08-25T15:00:00Z", "modified": "2024-08-25T15:00:00Z", "email_message_id": "email_message_id", "sms_body": "sms_body", "user_count": 0, "error_message": "error_message", "started_at": "2024-08-25T15:00:00Z", "completed_at": "2024-08-25T15:00:00Z" }
json
application/json

Get campaign stats

GET
https://api.preo.dev
/v1/campaigns/{id}/stats

Manage campaigns for sending email or SMS to segments.

Get campaign stats › path Parameters

id
​string · required

A unique value identifying this Campaign.

Get campaign stats › Responses

200
total_recipients
​integer · required
sent
​integer · required
failed
​integer · required
delivered
​integer · required
opened
​integer · required
clicked
​integer · required
bounced
​integer · required
unsubscribed
​integer · required
delivery_rate
​number · double · required
open_rate
​number · double · required
click_rate
​number · double · required
unsubscribe_rate
​number · double · required
GET/v1/campaigns/{id}/stats
curl --request GET \ --url https://api.preo.dev/v1/campaigns/:id/stats
shell
Example Responses
{ "total_recipients": 0, "sent": 0, "failed": 0, "delivered": 0, "opened": 0, "clicked": 0, "bounced": 0, "unsubscribed": 0, "delivery_rate": 0, "open_rate": 0, "click_rate": 0, "unsubscribe_rate": 0 }
json
application/json

Data ImportsConsents