Account API

Projects API

Add projects to a workspace and mint the keys they send with.

View as Markdown ↗

All-access key. These endpoints act on your account rather than inside one project, so a project-scoped key can't reach them. How keys and scopes work.

Endpoints

GET/v1/projects
POST/v1/projects
GET/v1/projects/{project_id}
PATCH/v1/projects/{project_id}
DELETE/v1/projects/{project_id}
POST/v1/projects/{project_id}/api-keys

A project is a sending unit inside a workspace, with its own contacts, campaigns, flows, domains, and keys. Every workspace starts with one; this adds more.

GET /v1/projects lists them flat, each naming the workspace it belongs to. Every object in these responses carries "object": "workspace" or "object": "project" — a workspace and its first project share a name by default, so the name alone doesn't tell you which you're holding.

Create a project

Body parameters

workspace_idstringrequired

The workspace that will own the project.

namestringrequired

Project display name.

cURL
curl -X POST https://emailbump.com/api/v1/projects \
  -H "Authorization: Bearer ebk_all_access_key" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "b1c2…",
    "name": "Acme Newsletter"
  }'
200 response
{
  "project": {
    "id": "7a10…",
    "workspace_id": "b1c2…",
    "name": "Acme Newsletter",
    "slug": "acme-newsletter-3f9a2b"
  }
}
What lives inside a project

Contacts, campaigns, flows, lists, and templates are all project resources — create them with the project API, using the key below or this one plus an X-Project-Id header.

The project profile

GET /v1/projects/{project_id} returns the project with the company details its email footers carry, and email_footer showing exactly what those footers will say.

200 response
{
  "project": {
    "object": "project",
    "id": "3bfa…", "name": "Acme Newsletter",
    "company_name": null, "address_line1": null, "city": null,
    "timezone": null,
    "email_footer": {
      "sender_name": "Acme Newsletter",
      "address": "Email Bump, 2261 Market Street #4978, San Francisco, CA 94114",
      "is_your_own_address": false
    }
  }
}
A blank address publishes ours

is_your_own_address: false means the project is printing Email Bump's postal address in its footers as though it were the sender's, and the response carries a warning saying so. Anti-spam law wants a real address for whoever is sending, so set one before any marketing email goes out — ask the customer, or find it on their website and confirm it with them. Never guess it.

cURL
curl -X PATCH https://emailbump.com/api/v1/projects/PROJECT_ID \
  -H "Authorization: Bearer ebk_all_access_key" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Inc",
    "address_line1": "12 Bridge Street",
    "city": "Austin", "state": "TX", "postal_code": "78701", "country": "USA",
    "timezone": "America/Chicago"
  }'

Body parameters

namestringoptional

Project display name.

company_namestringoptional

Shown in the footer as the sender. Defaults to the project name.

address_line1stringoptional

The physical address in the footer. Without it the footer falls back to Email Bump's.

address_line2, city, state, postal_code, countrystringoptional

The rest of the address.

timezonestringoptional

IANA name, e.g. America/New_York. Used by automation wait-until steps.

unsubscribe_reasonsarrayoptional

What the unsubscribe page offers, as [{ "key", "label" }] — up to 8, in your own words. Send [] to restore the built-in list. "Something else" is always offered last and opens the free-text box.

Delete a project

Removes the project and everything in it — contacts, lists, campaigns, flows, templates, sending domains, API keys and received mail. If it was the last project in its workspace, the workspace goes too.

cURL
curl -X DELETE https://emailbump.com/api/v1/projects/PROJECT_ID \
  -H "Authorization: Bearer ebk_all_access_key" \
  -H "Content-Type: application/json" \
  -d '{ "confirm_name": "Acme Newsletter" }'

confirm_name must match the project's name exactly, and the caller must be an owner. There is no undo — confirm with the person whose data it is first.

Two things survive it: what the project already sent this month still counts toward the workspace's allowance, and a workspace on a paid plan won't let its last project go until the plan is cancelled — otherwise the subscription would keep charging for an account nobody can reach.

Mint a project key

A project-scoped ebk_ key for the application that will send from this project. The secret is returned once and never again.

Body parameters

namestringrequired

Names the key in the project's request log — use the service and environment, e.g. checkout-production.

cURL
curl -X POST https://emailbump.com/api/v1/projects/7a10…/api-keys \
  -H "Authorization: Bearer ebk_all_access_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "server" }'
200 response
{
  "key": "ebk_…",
  "api_key": { "id": "9d70…", "name": "server", "prefix": "ebk_1a2b3c4" }
}