# PostShiba

> PostShiba is the transactional email API that powers Bento. These docs cover sending, domains, clusters, inboxes, webhooks, tenants, and the REST API. PostShiba does not ship official SDKs, broadcasts, audiences, or hosted templates.

## Get started

- [Introduction](/docs/introduction.md): PostShiba is the email API Bento runs on.
- [Create an API key](/docs/create-an-api-key.md): Authenticate REST calls with a platform application token.
- [Add and verify a domain](/docs/add-a-domain.md): Publish DKIM and return-path, then send from that domain.
- [Sending emails](/docs/sending-emails.md): Transactional mail over SMTP, HTTP inject, or the REST send API.

## Guides

- [Build an ESP on PostShiba](/docs/guides/build-an-esp.md): Give each customer their own domains, credentials, sending data, and controls.
- [Build an email support desk on PostShiba](/docs/guides/build-email-support-desk.md): Receive support mail, keep conversations together, and send replies.
- [Build an AI agent inbox on PostShiba](/docs/guides/build-ai-agent-inbox.md): Give an agent a real inbox with signed webhooks and reply support.
- [Send basic transactional emails with PostShiba](/docs/guides/send-transactional-email.md): Verify a domain and send your first production message.

## Quickstart

- [Send emails with HTTP](/docs/send-with-http.md): Queue a message with curl and a Bearer token.
- [Send emails with SMTP](/docs/send-with-smtp.md): STARTTLS on port 587 with AUTH PLAIN.
- [Send emails with Node.js](/docs/send-with-nodejs.md): Call the send API from Node.js. There is no PostShiba SDK.
- [Send emails with Rails](/docs/send-with-rails.md): Use Action Mailer over PostShiba SMTP.
- [Send emails with Ruby](/docs/send-with-ruby.md): POST /sends with Net::HTTP.
- [Send emails with Python](/docs/send-with-python.md): POST /sends with the requests library.
- [Send emails with PHP](/docs/send-with-php.md): POST /sends with cURL.
- [Send emails with Go](/docs/send-with-go.md): POST /sends with net/http.

## Emails

- [Sending emails](/docs/dashboard/emails/introduction.md): What you can send today, and how it is queued.
- [Attachments](/docs/dashboard/emails/attachments.md): Base64 attachments on the REST send API.
- [Custom headers](/docs/dashboard/emails/custom-headers.md): Add headers. Reserved names are ignored.
- [Unique args](/docs/dashboard/emails/unique-args.md): Pass tracking fields that come back on delivery webhooks.
- [Email bounces](/docs/dashboard/emails/email-bounces.md): Hard bounces suppress the address. Events stay on the cluster.
- [Email suppressions](/docs/dashboard/emails/email-suppressions.md): Addresses PostShiba will not send to.
- [Send test emails](/docs/dashboard/emails/send-test-emails.md): Use the cluster test-send form or the send API.

## Domains

- [Verified domains](/docs/dashboard/domains/introduction.md): DKIM and return-path must verify before send.
- [Managing domains](/docs/dashboard/domains/manage-domains.md): Create, verify, suspend, and resume sending domains.
- [Return-path](/docs/dashboard/domains/custom-return-path.md): We rewrite MAIL FROM to {id}@rp.your-domain.

## Clusters

- [Clusters](/docs/dashboard/clusters/introduction.md): A named shared-IP sending environment.

## Receiving

- [Receiving emails](/docs/dashboard/receiving/introduction.md): Hosted inboxes or MX on inbound.your-domain.
- [Managing received emails](/docs/dashboard/receiving/manage-emails.md): Poll stored mail or open it in the inbox.
- [Custom receiving domains](/docs/dashboard/receiving/custom-domains.md): Collect on inbound.your-domain. Do not MX the sending domain.
- [Receiving webhooks](/docs/dashboard/receiving/create-receiving-webhook.md): POST signed JSON or SendGrid Inbound Parse.
- [Receiving attachments](/docs/dashboard/receiving/attachments.md): Bytes on webhook and on message show.
- [Get email content](/docs/dashboard/receiving/get-email-content.md): Text, HTML, headers, raw MIME, and plus-address threads.

## Webhooks

- [Managing webhooks](/docs/webhooks/introduction.md): Delivery events as a SendGrid Event Webhook array.
- [Event types](/docs/webhooks/event-types.md): Types Kumo emits, and types you can subscribe to.
- [Retries and replays](/docs/webhooks/retries-and-replays.md): Backoff, dead letters, and replay from the dashboard.
- [Verify webhook requests](/docs/webhooks/verify-webhooks-requests.md): HMAC-SHA256 over {timestamp}.{body}.

## Tenants

- [Tenants](/docs/dashboard/tenants/introduction.md): Namespaces for domains, credentials, inboxes, and suppressions.

## API keys

- [Managing API keys](/docs/dashboard/api-keys/introduction.md): Platform applications issue Bearer tokens locked to a team.

## Knowledge base

- [Does PostShiba require production approval?](/docs/knowledge-base/does-capsule-require-production-approval.md): Yes. KYC must be approved before you create a cluster or inbox.
- [What if my domain is not verifying?](/docs/knowledge-base/what-if-my-domain-is-not-verifying.md): DKIM and return-path CNAMEs must match exactly.
- [How do I avoid MX conflicts?](/docs/knowledge-base/how-do-i-avoid-conflicting-with-my-mx-records.md): Point inbound.your-domain at PostShiba. Leave the root MX alone.
- [How do dedicated IPs work?](/docs/knowledge-base/how-do-dedicated-ips-work.md): They are not for sale in this version.
- [Subdomain or root domain?](/docs/knowledge-base/is-it-better-to-send-emails-from-a-subdomain.md): A sending subdomain keeps root MX free for inbound.
- [Sender email addresses](/docs/knowledge-base/how-do-i-create-an-email-address.md): You send from any address on a verified domain. Nothing to provision.
- [Why did an address land on suppressions?](/docs/knowledge-base/why-are-my-emails-landing-on-the-suppression-list.md): Hard bounce, spam report, or a manual add.
- [AUTH PLAIN, not AUTH LOGIN](/docs/knowledge-base/auth-plain.md): Port 587 after STARTTLS. Kumo does not speak AUTH LOGIN.
- [Setting up PostShiba for multi-tenant apps](/docs/knowledge-base/setting-up-capsule-for-multi-tenants.md): One team, extra tenants, scoped domains and credentials.
- [Delivered but not in the inbox](/docs/knowledge-base/what-if-an-email-says-delivered.md): Delivered means the destination accepted the message.

## API reference

- [Introduction](/docs/api-reference/introduction.md): Bearer tokens, team isolation, and OpenAPI.
- [Errors](/docs/api-reference/errors.md): Status codes and error strings the API returns.
- [Authentication](/docs/api-reference/authentication.md): Confirm the token and the user it belongs to.
- [Sending](/docs/api-reference/sending.md): SMTP, HTTP inject, and POST /sends.
- [Clusters](/docs/api-reference/clusters.md): Shared-IP sending environments.
- [Sending domains](/docs/api-reference/domains.md): Create, verify, suspend, and resume domains.
- [Tenants](/docs/api-reference/tenants.md): Extra tenants under the token's team.
- [Inboxes](/docs/api-reference/inboxes.md): Hosted or domain-bound receiving addresses.
- [Inbound messages](/docs/api-reference/messages.md): Alive messages for one inbox.
- [Events](/docs/api-reference/events.md): Delivery events for a cluster.
- [SMTP credentials](/docs/api-reference/smtp-credentials.md): Issue a username and a once-only password.
- [Webhooks](/docs/api-reference/webhooks.md): Outbound delivery webhook endpoints.
- [Suppressions](/docs/api-reference/suppressions.md): Addresses that must not be sent to.
