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

# Get join context

> Public, unauthenticated brand-safe lookup that lets the co-branded signup page theme itself

`GET /api/v2/storefront/join-context/{slug}`

Resolves a join-link slug to brand-safe context so the co-branded `/join/{slug}` signup page can theme itself **before** the prospective buyer has an account. This endpoint is **public and unauthenticated** — it never requires or accepts an API key, and it never returns seller or account identifiers. It surfaces only what a public signup screen needs to render: storefront name, operator domain, logo, brand colors, and locale hints.

<Note>
  This is the only join-link endpoint that is unauthenticated. Minting, listing, and disabling links all require a seller API key.
</Note>

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl https://api.interchange.io/api/v2/storefront/join-context/northwind-advertisers
  ```
</CodeGroup>

## Parameters

| Field  | Type          | Required | Notes                                                                 |
| ------ | ------------- | -------- | --------------------------------------------------------------------- |
| `slug` | string (path) | Yes      | The join-link slug (2–64 chars, lowercase letters, numbers, hyphens). |

## Response

`200 OK` with a `JoinLinkContext`. A usable link returns `valid: true` with branding populated:

```json theme={null}
{
  "slug": "northwind-advertisers",
  "valid": true,
  "storefrontName": "Northwind Media",
  "operatorDomain": "northwind.example.com",
  "logoUrl": "https://logos.interchange.io/northwind.png",
  "brandColors": {
    "primary": "#E4002B",
    "secondary": "#1A1A1A"
  },
  "defaultCurrency": "EUR",
  "supportedLanguages": ["nl", "en"]
}
```

A missing, revoked, expired, exhausted, or closed link returns `valid: false` with all branding fields null — never an error status:

```json theme={null}
{
  "slug": "northwind-advertisers",
  "valid": false,
  "storefrontName": null,
  "operatorDomain": null,
  "logoUrl": null,
  "brandColors": null,
  "defaultCurrency": null,
  "supportedLanguages": null
}
```

### Response fields

| Field                | Type              | Notes                                                                               |
| -------------------- | ----------------- | ----------------------------------------------------------------------------------- |
| `slug`               | string            | Echoes the requested slug.                                                          |
| `valid`              | boolean           | `false` for a missing, revoked, expired, exhausted, or closed link.                 |
| `storefrontName`     | string \| null    | Display name for the signup header. Null when invalid.                              |
| `operatorDomain`     | string \| null    | The operator's domain. Null when invalid.                                           |
| `logoUrl`            | string \| null    | Brand logo (http(s)). Null when invalid or unresolved.                              |
| `brandColors`        | object \| null    | brand.json colors (`primary`, `secondary`, `accent`, …). Null when unresolved.      |
| `defaultCurrency`    | string \| null    | Seller-confirmed settlement currency (ISO-4217). Null until the seller confirms it. |
| `supportedLanguages` | string\[] \| null | Seller-curated languages the join surface may localize within. Null if unset.       |

## Errors

* `400 VALIDATION_ERROR` — `slug` does not match the allowed format.

There is no `401`: the endpoint is public. An unresolvable link is reported as `valid: false` with a `200`, not an error.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Join-link tasks" href="/v2/storefront/join-links/tasks" icon="list-check">
    All operations
  </Card>

  <Card title="Create join link" href="/v2/storefront/join-links/tasks/create-join-link" icon="plus">
    Mint a link to resolve
  </Card>

  <Card title="Join links overview" href="/v2/storefront/join-links/overview" icon="link">
    Concepts and approval policies
  </Card>

  <Card title="Errors" href="/v2/reference/errors" icon="triangle-exclamation">
    Shared error contract
  </Card>
</CardGroup>
