Primitive
Configure Primitive key requirements without assuming its content deduplication is replay-safe.
Import primitiveEmailLayer from @corven/email-sdk/primitive to provide the common Email service for this account.
Configure the account
import { Layer } from "effect";
import type { Redacted } from "effect";
import { primitiveEmailLayer } from "@corven/email-sdk/primitive";
import { emailHttpLayer } from "./sending.js";
export const configuredPrimitiveAccount = (apiKey: Redacted.Redacted) =>
primitiveEmailLayer({ apiKey, keylessSends: "Reject", tracking: "ProviderDisabled" }).pipe(
Layer.provide(emailHttpLayer),
);
The example reuses the explicit HTTP Layer. Acquire credentials in trusted host code, then provide this account Layer to your sending program.
Message behavior
- Use a prim_ submission key; prim_oat_ credentials are excluded by this adapter.
- Choose Reject to require caller keys, or explicitly AllowContentDeduplication for keyless sends. The latter permits provider content deduplication. The SDK still does not retry unknown submissions.
- Only Auto-Submitted, X-Auto-Response-Suppress and Precedence custom headers are accepted. Metadata, tags and scheduling are unsupported.
- Acknowledgments must describe a fresh submitted_to_agent operation with consistent recipient coverage.
Idempotency
The adapter forwards keys of up to 255 characters. Its idempotency declaration is KeyForwarding. The SDK does not retry requests with unknown submission outcomes.
Read field support before switching accounts, and receipts and retries before adding recovery behavior. Configuration and local validation do not authenticate the account or prove delivery.