Official server SDKs
Thin clients for the canonical Tenvio v1 API across eight ecosystems.
published.Server-side secret boundary
Never embed a sending or Management API key in browser or mobile code. SDKs have no telemetry and do not log keys, email content, attachments, BCC recipients, or sensitive server responses.
Choose a language
| Ecosystem | Pre-release source | Send surface |
|---|---|---|
| Node.js/TypeScript | tenvio-node | client.emails.send(request, key) |
| Python | tenvio-python | client.emails.send(request, key) |
| Go | tenvio-go | client.Emails.Send(ctx, request, key) |
| PHP | tenvio-php | $client->sendEmail($request, $key) |
| Java | tenvio-java | client.emails().send(json, key) |
| .NET | tenvio-dotnet | client.Emails.SendAsync(request, key) |
| Ruby | tenvio-ruby | client.emails.send(request, idempotency_key: key) |
| Rust | tenvio-rust | client.emails().send(&request, key).await |
Idempotency, retries, and errors
Every send requires a caller-owned idempotency key. Bounded retries reuse that exact key and apply only to transport failures, 429, and retryable 5xx responses; Retry-After is honored. Authentication, validation, policy, resource-limit, and idempotency-conflict errors are not blindly retried. Clients expose HTTP status, stable error code, a safe message, Retry-After, and safe request metadata.
The pre-release SDK surface covers critical and transactional email. Approved Custom accounts use the separate REST Broadcast API directly until SDK validation includes that surface.
Tenvio Docs