Skip to content

Projects

A project holds its own contacts, campaigns, sender and settings. Every other route works inside one project.

View as Markdown

List projects

GET/projects

Every project you own. Projects are capped by your plan, so they all come back in one page.

Request
curl "https://sendocado.com/api/v1/projects" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY"
Response 200
{
  "projects": [
    {
      "id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
      "name": "Acme",
      "timezone": "America/New_York",
      "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104",
      "inbound_address": "acme-7kq2@in.sendocado.com",
      "created_at": 1787408000000
    }
  ],
  "next_cursor": null
}

Errors

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

Create a project

POST/projects

A new, empty project. The time zone is the default for its campaigns. Marketing email needs the postal address, because it goes in every footer; you can add it later.

Body

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

FieldTypeNotes
namestringRequired
timezonestringRequired
postal_addressstring | nullRequired
Request
curl -X POST "https://sendocado.com/api/v1/projects" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Acme",
  "timezone": "America/New_York",
  "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104"
}'
Response 201
{
  "id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
  "name": "Acme",
  "timezone": "America/New_York",
  "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104",
  "inbound_address": "acme-7kq2@in.sendocado.com",
  "created_at": 1787408000000
}

Errors

StatusTypeExample message
400invalid_dataSend a JSON request body.
401unauthorizedSend a valid API key as "Authorization: Bearer sc_…", or sign in.
402plan_limit_reachedYour plan allows 5,000 contacts. Upgrade the plan to add more.
429rate_limitedToo many requests. Try again in 12 seconds.

Get a project

GET/projects/{project_id}

inbound_address is where the project receives mail: replies to its emails come in through it.

Parameters

NameInTypeNotes
project_idpathstringRequired
Request
curl "https://sendocado.com/api/v1/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY"
Response 200
{
  "id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
  "name": "Acme",
  "timezone": "America/New_York",
  "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104",
  "inbound_address": "acme-7kq2@in.sendocado.com",
  "created_at": 1787408000000
}

Errors

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

Update a project

PUT/projects/{project_id}

Send every field; the project becomes exactly what you send.

Parameters

NameInTypeNotes
project_idpathstringRequired

Body

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

FieldTypeNotes
namestringRequired
timezonestringRequired
postal_addressstring | nullRequired
Request
curl -X PUT "https://sendocado.com/api/v1/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Acme",
  "timezone": "America/New_York",
  "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104"
}'
Response 200
{
  "id": "ujzde8gxd6ncf10epf91dhodzdoc9is0",
  "name": "Acme",
  "timezone": "America/New_York",
  "postal_address": "Acme Inc., 548 Market St, San Francisco, CA 94104",
  "inbound_address": "acme-7kq2@in.sendocado.com",
  "created_at": 1787408000000
}

Errors

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

Delete a project

DELETE/projects/{project_id}

The project is gone at once; its contacts, campaigns and sends are deleted in the background. This cannot be undone.

Parameters

NameInTypeNotes
project_idpathstringRequired
Request
curl -X DELETE "https://sendocado.com/api/v1/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $SENDOCADO_API_KEY"

Answers 204 with no body.

Errors

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