> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reallyquickemails.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Partner quickstart

> Integrate RQE as the platform for your own customers: the model, how to set it up, and how to keep an eye on each customer.

This guide is for **partners**: integrators offering email to **their own customers** with RQE underneath (reseller pattern).

**The model is: one customer, one project.** You create a project per customer with your partner key and get back their API key to operate it. Each customer is genuinely isolated — their data, their domains, their limits and their stats.

## Start here

<Steps>
  <Step title="Create the customer's project">
    With your **partner key** (`sk_partner_...`, issued by RQE when your partner account is enabled), you create one project per customer and receive their `api_key`.

    ```bash theme={null}
    curl -X POST https://api.reallyquickemails.com/v1/partner/projects \
      -H "Authorization: Bearer sk_partner_xxxxxxxxxxxx" \
      -H "Content-Type: application/json" \
      -d '{ "name": "Customer", "external_key": "your-internal-id" }'
    ```

    ```json theme={null}
    { "project_id": "…", "slug": "customer", "api_key": "sk_proj_…" }
    ```

    Store the `api_key` securely. The `external_key` makes the call **idempotent**: retrying returns the same project instead of duplicating it.
  </Step>

  <Step title="Register their domain">
    With the customer's `api_key`, register their domain and get back the DNS records they need to publish.

    ```bash theme={null}
    curl -X POST https://api.reallyquickemails.com/domains/register \
      -H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
      -H "Content-Type: application/json" \
      -d '{ "domain": "customer.com" }'
    ```

    To let them publish in one click, use [Domain Connect](/en/api-reference/domains): `GET /domains/customer.com/domain-connect` returns a signed URL that creates the records at their provider.

    <Note>
      This is where most integrations stall: the end customer has to touch their DNS. The one-click link is what helps most.
    </Note>
  </Step>

  <Step title="Register their reply domain (optional)">
    So replies land at `name@reply.customer.com` instead of a token-encoded address:

    ```bash theme={null}
    curl -X POST https://api.reallyquickemails.com/domains/reply \
      -H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
      -H "Content-Type: application/json" \
      -d '{ "domain": "customer.com" }'
    ```
  </Step>

  <Step title="Wait for verification">
    Once the customer publishes the DNS, you get the **`domain.verified`** webhook — no polling needed. See [Webhooks](/en/api-reference/webhooks).
  </Step>

  <Step title="Send and measure">
    With the same `api_key`, [send](/en/api-reference/public-api) transactional or batch email. To see how each customer is doing:

    ```bash theme={null}
    curl https://api.reallyquickemails.com/v1/partner/projects/{project_id}/stats \
      -H "Authorization: Bearer sk_partner_xxxxxxxxxxxx"
    ```

    And `GET /v1/partner/projects` lists your whole portfolio.
  </Step>
</Steps>

## Check your customers' health

`GET /domains/health` returns, for every domain in a project: whether it can send, how its authentication looks, how much it sent, how it bounces, and **what's missing** — in text you can forward straight to your customer.

```bash theme={null}
curl "https://api.reallyquickemails.com/domains/health" \
  -H "Authorization: Bearer sk_proj_xxxxxxxxxxxx"
```

```json theme={null}
{
  "summary": { "total": 3, "healthy": 1, "warning": 1, "critical": 1 },
  "data": [
    {
      "domain": "customer.com",
      "status": "critical",
      "can_send": true,
      "sent": 4501,
      "hard_bounce_rate": 0.42,
      "issues": ["Verificado solo por email (un click), sin dominio: no permite DKIM propio, reply domain ni tracking domain."]
    }
  ]
}
```

<Warning>
  **Watch for `can_send: true` with `status: critical`.** Email goes out with a `200` and nothing looks broken, but it ships without DKIM on your customer's domain — their reputation blends with everyone else's, and they can't use their own reply domain or tracking domain.

  It's the single most common gap in partner integrations, and it doesn't surface as an error anywhere else.
</Warning>

See [Domains](/en/api-reference/domains) for the full response.

<Warning>
  **Watch `hard_bounce_rate`, not the total bounce count.** Providers calculate the suspension threshold (\~5%) on **permanent** bounces; transient ones don't count. A domain can show 12% total bounces while staying below 1% hard bounce.

  Also ask each customer to publish **DKIM on their own domain**: that's what makes their sending reputation theirs, rather than blending with everyone else's.
</Warning>

***

## Alternative — several customers in one project

If you'd rather manage **a single credential** and your customers will never need their own limits or access, you can keep them all inside one project.

|                                      | **One project per customer**     | **Several customers, one project** |
| ------------------------------------ | -------------------------------- | ---------------------------------- |
| Credential                           | `sk_partner_` + one per customer | a single `sk_proj_`                |
| Domain and reply domain per customer | yes                              | yes                                |
| Per-customer metrics                 | `/v1/partner/projects/:id/stats` | `/v1/domain-stats`                 |
| Per-customer rate limits             | **yes**                          | no, project-wide                   |
| Your customer signs into RQE         | **yes**                          | not possible                       |

In that model registering domains and reply domains works the same, just with your own key. A project can hold **several reply domains**: each send resolves the one matching the sender's domain.

To debug a specific customer:

```bash theme={null}
curl "https://api.reallyquickemails.com/v1/activity?sender_domain=customer.com&status=bounced" \
  -H "Authorization: Bearer sk_proj_xxxxxxxxxxxx"
```

And for their aggregated metrics, `GET /v1/domain-stats` — see [Activity](/en/api-reference/activity). `GET /domains/health` works here too, and returns one entry per customer domain.

## With an AI agent (MCP)

```json theme={null}
{
  "mcpServers": {
    "reallyquickemails-partner": {
      "url": "https://mcp.reallyquickemails.com/mcp",
      "headers": { "Authorization": "Bearer sk_partner_xxxxxxxxxxxx" }
    }
  }
}
```

See [MCP · partner mode](/en/guides/mcp#partner-mode-manage-your-client-portfolio).

## Reference

* [Domains](/en/api-reference/domains) — registration, verification, health, reply domain and tracking domain.
* [Activity](/en/api-reference/activity) — `?sender_domain=` and `/v1/domain-stats`.
* [Public API](/en/api-reference/public-api) — sending.
* [Webhooks](/en/api-reference/webhooks) — `domain.verified` and email events.
* [Partner / Provisioning](/en/api-reference/partner) — `/v1/partner/projects`.
