# Configure the Resend SDK

> Part of the Cowliss docs. Markdown for every page: append `index.md` to its URL. Site map: /llms.txt

Your existing Resend code, pointed at Cowliss. Cowliss serves Resend's emails API, so the calls you already wrote keep working and every message lands in the same delivery log as the ones your automations send.

This is for the mail your own code sends. Anything with a rule or a wait behind it belongs in an [automation](/automations/), which is where consent, frequency and waiting live.

## Two variables

```sh
RESEND_BASE_URL=https://api.cowliss.com/resend/app_app-cowliss-com
RESEND_API_KEY=<your Cowliss API key>
```

```ts
import { Resend } from "resend";

const resend = new Resend(); // both read from the environment
```

An app that is already sending needs no code change, and `new Resend(key, { baseUrl })` works the same.

The base URL ends with the **app id** of the app you are sending for. Read it back with `cow apps list` or copy it from the app's page. See [Apps and sources](/tracking/apps/).

The key is the org-level API key from **Settings → Credentials**. It is not scoped to an app: the id in the URL is what says which app a message belongs to.

## Where next

- [Send](/resend/send/): one message, a pushed template, and what `from` may be.
- [Batch](/resend/batch/): up to 100 messages in one call.
- [Reference](/resend/reference/): what is served, what is refused, and every error.
- [Moving on](/resend/moving-on/): what changes, and what does not, when you adopt the Cowliss SDK.
