Search the docs

Find a page, a section, or an endpoint.

Pods

Every pods endpoint, generated from the API's own schemas.

List pods

get/api/v1/pods

The containers in this account, the default first. A pod holds addresses and domains — a customer of yours, a client, or just test apart from production. **It is organisational, not a boundary.** A pod carries no sending reputation of its own, and a key is still a list of address ids rather than something scoped to a pod. Saying so plainly because the alternative is a reader assuming an isolation that is not there. Not paged: this is a menu somebody switches with, and a product where that menu needs a cursor is one where the menu was the wrong shape.

Responses

  • 200Every pod.
  • 401No API key, or one that is not valid.
  • 404No such resource, or one this key cannot reach. The two answer the same, so treat a 404 as “not available to you” rather than “does not exist”.
  • 429Rate limited. `X-RateLimit-Reset` says when to retry.
bash
curl https://pidgeon.ai/api/v1/pods \
  -H "Authorization: Bearer $PIDGEON_API_KEY"

Generated · public/openapi.json

Create a pod

post/api/v1/pods

Name it after whatever it holds — a customer, an environment. `client_id` is your own id for it, carried and never parsed, and has to be unique within the account so that looking one up by it has an answer.

Body

  • namestringrequired
  • client_idstring | null

    Your own id for this pod. Carried and returned, never parsed.

Responses

  • 201The pod.
  • 401No API key, or one that is not valid.
  • 404No such resource, or one this key cannot reach. The two answer the same, so treat a 404 as “not available to you” rather than “does not exist”.
  • 429Rate limited. `X-RateLimit-Reset` says when to retry.
bash
curl https://pidgeon.ai/api/v1/pods \
  -X POST \
  -H "Authorization: Bearer $PIDGEON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'

Generated · public/openapi.json

Fetch one pod

get/api/v1/pods/{id}

Parameters

  • idstringrequired

Responses

  • 200The pod.
  • 401No API key, or one that is not valid.
  • 404No such resource, or one this key cannot reach. The two answer the same, so treat a 404 as “not available to you” rather than “does not exist”.
  • 429Rate limited. `X-RateLimit-Reset` says when to retry.
bash
curl https://pidgeon.ai/api/v1/pods/{id} \
  -H "Authorization: Bearer $PIDGEON_API_KEY"

Generated · public/openapi.json

Rename a pod, or change its client id

patch/api/v1/pods/{id}

There is no delete. A container holding mailboxes is not a thing to remove with one call, and nothing yet moves addresses between pods — so the verb would either refuse every non-empty pod or destroy mail. Suspend the addresses instead.

Parameters

  • idstringrequired

Body

  • namestring
  • client_idstring | null

    Your own id for this pod. Carried and returned, never parsed.

Responses

  • 200The pod.
  • 401No API key, or one that is not valid.
  • 404No such resource, or one this key cannot reach. The two answer the same, so treat a 404 as “not available to you” rather than “does not exist”.
  • 429Rate limited. `X-RateLimit-Reset` says when to retry.
bash
curl https://pidgeon.ai/api/v1/pods/{id} \
  -X PATCH \
  -H "Authorization: Bearer $PIDGEON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'

Generated · public/openapi.json