# Get a career portal

List an organization's public career portal — branding and all open roles. No authentication.

Returns an organization's public career portal: its branding/theme and every open, public role. This endpoint is **public** — no API key is required.

<Notice type="info" title="Salary visibility">
Each role may include `salaryMin`, `salaryMax`, `salaryCurrency`, and `salaryPeriod`. These are only present when the organization enables salary display (`org.portalTheme.showSalary` is `true`); otherwise they are omitted.
</Notice>

## Path parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `orgSlug` | string | The organization's portal slug (e.g. `acme`). |

## Example request

```bash
curl https://app.talent-ray.com/api/public/portal/acme
```

## Response

`200 OK`

```json
{
  "org": {
    "name": "Acme Inc.",
    "logo": "https://.../logo.png",
    "slug": "acme",
    "domain": "acme.com",
    "portalTheme": { "primaryColor": "#4F1AD6", "showSalary": true }
  },
  "roles": [
    {
      "id": "clx123abc",
      "name": "Senior Backend Engineer",
      "description": { },
      "department": "Engineering",
      "location": "Remote",
      "workType": "remote",
      "collarType": "white",
      "salaryMin": 90000,
      "salaryMax": 120000,
      "salaryCurrency": "EUR",
      "salaryPeriod": "year",
      "createdAt": "2026-06-01T09:00:00Z"
    }
  ]
}
```

| Field | Type | Description |
| --- | --- | --- |
| `org` | object | Portal branding and metadata. |
| `org.portalTheme.showSalary` | boolean | Whether salary fields are included on roles. |
| `roles` | array | All open, public roles for the org. |
| `roles[].workType` | string \| null | `remote`, `hybrid`, or `onsite`. |
| `roles[].collarType` | string \| null | `white`, `gray`, or `blue`. |

## Status codes

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `404` | Portal not found or not enabled. |
| `500` | Server error. |