Scaleway
Send through Scaleway Transactional Email with region-scoped endpoints and header-based reply-to.
Capabilities
| Repeated headers | Idempotency | Scheduling | Personalized |
|---|---|---|---|
| Yes | none | No | expanded |
These values come from the adapter's exported capabilities declaration. The field support matrix covers normalized message fields.
The Scaleway adapter calls the Scaleway Transactional Email API with plain fetch. Sends are region-scoped: the adapter targets /regions/{region}/emails and defaults to fr-par.
Configure
Create an IAM secret key in the Scaleway console, note your project ID, and verify the sending domain in Transactional Email.
import { createEmailClient } from "@opencoredev/email-sdk";
import { scaleway } from "@opencoredev/email-sdk/scaleway";
export const email = createEmailClient({
adapters: [
scaleway({
secretKey: process.env.SCALEWAY_SECRET_KEY!,
projectId: process.env.SCALEWAY_PROJECT_ID!,
}),
],
});Prop
Type
Send
Scaleway maps cc, bcc, replyTo, headers, and attachments.
const result = await email.send({
from: "Acme <billing@acme.com>",
to: "user@example.com",
replyTo: "support@acme.com",
subject: "Your May invoice",
html: "<p>Invoice INV-2041 is attached.</p>",
attachments: [
{ filename: "invoice.txt", content: "Invoice INV-2041: 49.00 EUR", contentType: "text/plain" },
],
});
console.log(result.id); // Scaleway email id (`id` or `email_id` in the response)replyTo travels as a Reply-To entry in Scaleway's additional_headers. Setting both replyTo and a manual Reply-To header throws an EmailValidationError before any request, so pick one.
No tags or metadata
Scaleway has no tag or metadata concept, so either field throws an EmailValidationError before
any request is made. Pick a tag-capable adapter if you need them.
Verify from the CLI
SCALEWAY_SECRET_KEY="..." SCALEWAY_PROJECT_ID="..." npx --package @opencoredev/email-sdk email-sdk doctor --adapter scalewaySCALEWAY_SECRET_KEY="..." SCALEWAY_PROJECT_ID="..." npx --package @opencoredev/email-sdk email-sdk send \
--adapter scaleway \
--region fr-par \
--from "Acme <hello@acme.com>" \
--to user@example.com \
--subject "Scaleway smoke test" \
--text "It works" \
--dry-run--region falls back to the SCALEWAY_REGION env var, then fr-par. Drop --dry-run for one real send to prove the key, project, region, and sender domain line up.
Frequently asked questions
Does Email SDK support Scaleway?
Yes. Email SDK ships a Scaleway adapter imported from @opencoredev/email-sdk/scaleway. You keep your Scaleway account and credentials; the SDK adds message validation, typed errors, and no-network test adapters around the same send() call used for every other provider.
Which message fields does the Scaleway adapter support?
Scaleway supports CC recipients, BCC recipients, Reply-To address, Custom headers, and Attachments. It does not support Tags, Metadata, and Scheduled sending (sendAt); Email SDK rejects a message that uses those fields before any request is made.
Can Scaleway schedule email for later with Email SDK?
No. Scaleway has no provider-side scheduling, so a message with sendAt fails validation. Store the job in your own queue and send when it is due.
Does the Scaleway adapter support idempotent sends?
No. Scaleway has no provider-side idempotency, so a retried send can be delivered twice. Deduplicate in your own queue before retrying.