Skip to content

Replies

Answers to your emails, received for you and tied to the email they answer.

View as Markdown

List replies

GET/projects/{project_id}/replies

Newest first. Filter by one of campaign_id, contact_id, broadcast_id or is_unread=true at a time. Mail sent straight to the project’s inbound address has no send, campaign or broadcast.

Parameters

NameInTypeNotes
project_idpathstringRequired
campaign_idquerystring | nullOptional
contact_idquerystring | nullOptional
broadcast_idquerystring | nullOptional
is_unreadquery"true" | nullOptional
cursorquerystring | nullOptional
limitqueryintegerOptional, default 50
Request
curl "https://sendocado.com/api/v1/projects/$PROJECT_ID/replies?is_unread=true" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY"
Response 200
{
  "replies": [
    {
      "id": "kdfy6spsc3lkr2aqxv9upctnwlavyf4r",
      "project_id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
      "send_id": "thjxjqi3ogz5kok16zv0mwufxbv932by",
      "contact_id": "j8ht9lgmxg9edn581u33xtplpft75v2s",
      "campaign_id": "h5dnsipzz5fk2z9ri19r0wyojfljooa5",
      "broadcast_id": null,
      "from_email": "maya@example.com",
      "from_name": "Maya Patel",
      "subject": "Re: Welcome to Acme, Maya",
      "preview": "Thanks! Quick question: can I import from a CSV?",
      "is_auto_reply": false,
      "is_unread": true,
      "created_at": 1790010800000
    }
  ],
  "next_cursor": null
}

Errors

StatusTypeExample message
400invalid_datalimit: Too big: expected number to be <=200
401unauthorizedSend a valid API key as "Authorization: Bearer sc_…", or sign in.
404project_not_foundProject not found.
422invalid_referenceNo template with that id in this project.
429rate_limitedToo many requests. Try again in 12 seconds.

Get a reply

GET/replies/{reply_id}

The full text and attachments. html_url serves the reply’s HTML as plain text so it never runs in a browser; show it in a sandbox.

Parameters

NameInTypeNotes
reply_idpathstringRequired
Request
curl "https://sendocado.com/api/v1/replies/$REPLY_ID" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY"
Response 200
{
  "id": "kdfy6spsc3lkr2aqxv9upctnwlavyf4r",
  "project_id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
  "send_id": "thjxjqi3ogz5kok16zv0mwufxbv932by",
  "contact_id": "j8ht9lgmxg9edn581u33xtplpft75v2s",
  "campaign_id": "h5dnsipzz5fk2z9ri19r0wyojfljooa5",
  "broadcast_id": null,
  "from_email": "maya@example.com",
  "from_name": "Maya Patel",
  "subject": "Re: Welcome to Acme, Maya",
  "preview": "Thanks! Quick question: can I import from a CSV?",
  "is_auto_reply": false,
  "is_unread": true,
  "created_at": 1790010800000,
  "text": "Thanks! Quick question: can I import from a CSV?\n\nMaya",
  "html_url": null,
  "attachments": []
}

Errors

StatusTypeExample message
401unauthorizedSend a valid API key as "Authorization: Bearer sc_…", or sign in.
404reply_not_foundReply not found.
429rate_limitedToo many requests. Try again in 12 seconds.

Mark a reply read or unread

PUT/replies/{reply_id}

is_unread false marks it read.

Parameters

NameInTypeNotes
reply_idpathstringRequired

Body

Send JSON with every field; use null for a value you do not set.

FieldTypeNotes
is_unreadbooleanRequired
Request
curl -X PUT "https://sendocado.com/api/v1/replies/$REPLY_ID" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "is_unread": false
}'
Response 200
{
  "id": "kdfy6spsc3lkr2aqxv9upctnwlavyf4r",
  "project_id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
  "send_id": "thjxjqi3ogz5kok16zv0mwufxbv932by",
  "contact_id": "j8ht9lgmxg9edn581u33xtplpft75v2s",
  "campaign_id": "h5dnsipzz5fk2z9ri19r0wyojfljooa5",
  "broadcast_id": null,
  "from_email": "maya@example.com",
  "from_name": "Maya Patel",
  "subject": "Re: Welcome to Acme, Maya",
  "preview": "Thanks! Quick question: can I import from a CSV?",
  "is_auto_reply": false,
  "is_unread": false,
  "created_at": 1790010800000
}

Errors

StatusTypeExample message
400invalid_dataSend a JSON request body.
401unauthorizedSend a valid API key as "Authorization: Bearer sc_…", or sign in.
404reply_not_foundReply not found.
429rate_limitedToo many requests. Try again in 12 seconds.