← ClaudeAtlas

sent-integration-starterlisted

Stands up a production-ready Sent v3 integration in an existing codebase — SDK selection and client construction, x-api-key configuration, idempotent sends, retry and rate-limit handling, the 46-code error catalog, sandbox verification, and a verified webhook receiver. Use when adding Sent to an app for the first time, choosing an SDK or framework wiring, handling 429 or 409 responses, deciding what to log, or hardening an integration before launch.
aiskillstore/marketplace · ★ 421 · AI & Automation · score 80
Install: claude install-skill aiskillstore/marketplace
# Sent Integration Starter Bring up a Sent integration in four stages: authenticate, send idempotently, receive verified events, then harden. Do not conflate them — most broken integrations pass stage one and skip stage three. ## Stage 1: client and credentials Direct Sent v3 REST requests authenticate with the `x-api-key` header. An application proxy may accept `Authorization: Bearer` from its own callers, and the Sent MCP server uses client-managed OAuth, but neither changes the REST header sent to `api.sent.dm`. Organization keys may add `x-profile-id` to act for a child profile; a profile-scoped key that sends that header receives `403`. | Language | Package | Client | | --- | --- | --- | | TypeScript | `@sentdm/sentdm` | `new SentDm()` | | Python | `sentdm` (imports `sent_dm`) | `Sent()` or `AsyncSent()` | | Go | `github.com/sentdm/sent-dm-go` | `sentdm.NewClient()` | | Java | `dm.sent:sent-java` | `SentOkHttpClient.fromEnv()` | | C# | `Sentdm` | `new SentClient()` | | PHP | `sentdm/sent-dm-php` | `new SentDm\Client($apiKey)` | | Ruby | `sentdm` | `Sentdm::Client.new` | Every SDK except PHP reads `SENT_DM_API_KEY` automatically. Single-endpoint receiver samples read `SENT_DM_WEBHOOK_SECRET`; multi-tenant production receivers need a secret registry keyed by webhook id instead of one process-wide secret. Older documentation uses `SENT_API_KEY` and `SENT_WEBHOOK_SECRET` — treat those as aliases and standardize on the `SENT_DM_` names. Choose the client lifecycle from