# Apply to a public job

Generate a candidate signup invite link for a public role. No authentication.

Generates (or reuses) a candidate **signup invitation link** for a public, open role and returns its URL. This endpoint is **public** — no API key is required. Redirect the candidate to the returned `inviteUrl` to start their application.

## Path parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `orgSlug` | string | The organization's portal slug. |

## Request body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `roleId` | string | Yes | The public role to apply for. |
| `locale` | string | No | Language for the signup link. Default `en`. |

## Example request

```bash
curl -X POST https://app.talent-ray.com/api/public/portal/acme/apply \
  -H "Content-Type: application/json" \
  -d '{ "roleId": "clx123abc", "locale": "en" }'
```

## Response

`200 OK`

```json
{
  "inviteUrl": "https://app.talent-ray.com/en/signup/invite/inv_abc123"
}
```

| Field | Type | Description |
| --- | --- | --- |
| `inviteUrl` | string | Full signup URL to share with or redirect the candidate to. |

## Status codes

| Status | Meaning |
| --- | --- |
| `200` | Invite link returned. |
| `400` | `roleId` is missing. |
| `404` | Portal not enabled, or job not found / not accepting applications. |
| `500` | Server error. |