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

# Custom domains

> Host branded oral assessment and roleplay exam pages on your own domain.

# Custom domains

Organizations can configure a **custom domain** so students take oral assessments and roleplay on your hostname with your logo, company name, and post-exam redirect URL.

<Warning>
  Custom domains serve **exam-taking pages only** — not the full Coraltalk platform. Admin, billing, API keys, VidTickets, and other routes return **404** on your custom domain.
</Warning>

## Allowed routes on custom domains

| Path                       | Purpose               |
| -------------------------- | --------------------- |
| `/exam/{id}`               | Exam entry            |
| `/exam/{id}/oral-learning` | Oral assessment start |
| `/exam/{id}/roleplay`      | Roleplay session      |
| `/exam/{id}/live`          | Live oral exam        |
| `/exam/{id}/thank-you`     | Completion page       |

## Setup (organization admin UI)

1. Sign in at [app.coraltalk.com](https://app.coraltalk.com) as an org admin.
2. Open **Custom domains** in organization settings.
3. Enter your hostname (e.g. `exams.yourschool.edu`).
4. Add the CNAME record shown at your DNS provider.
5. Click **Verify** and wait for DNS propagation.
6. Configure white-label: company name, logo, post-exam redirect URL.
7. Choose **Applies to**: oral assessments, roleplay, or both.

## DNS example

```
Type:  CNAME
Name:  exams
Value: (target provided by Coraltalk / Vercel)
```

TLS is provisioned automatically after verification.

## Example student links

```
https://exams.yourschool.edu/exam/{EXAM_ID}
https://exams.yourschool.edu/exam/{EXAM_ID}/roleplay
```

## Student sign-in (custom domains)

Clerk **satellite mode** on your domain blocks normal email-code and OAuth sign-in. Your **backend** must call the Platform API (not the exam hostname):

| Method | Path                                  | Auth                                |
| ------ | ------------------------------------- | ----------------------------------- |
| `POST` | `/api/v1/prod/students/sign-in-token` | `Authorization: Bearer ct_live_...` |

Return `data.token` to the exam page; the client signs in with Clerk `strategy: "ticket"`. See [Student sign-in token](/coraltalk-apis/student-sign-in-token) and [Authentication](/coraltalk-apis/authentication).

<Warning>
  Do not call a separate `/api/student/sign-in-token` route on the custom domain. All Platform API requests use `https://app.coraltalk.com/api/v1/{env}/`.
</Warning>
