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

# Bookmark Job

> Bookmark a job to save it for later

## Endpoint

```
POST /api/v1/jobs/bookmark
```

**Base URL**: `http://localhost:3000/api/v1`

<Note>This endpoint requires **authentication** (Job Seeker only).</Note>

## Request Body

<ParamField body="jobId" type="string" required>
  The unique identifier of the job to bookmark.
</ParamField>

<ParamField body="jobSource" type="enum" required>
  The source type of the job. Values: `DIRECT`, `SCRAPED`.
</ParamField>

## Request Shape

```json theme={null}
{
  "jobId": "1b6a74d1-d9aa-4e71-81b6-51d3187e5d93",
  "jobSource": "SCRAPED"
}
```

## Response (200 OK)

```json theme={null}
{
  "success": true,
  "data": {
    "id": "b61168e1-abf0-4bce-ab53-41392825aaa5"
  },
  "message": "Job bookmarked successfully",
  "meta": {
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/jobs/bookmark",
    "method": "POST"
  }
}
```

<ResponseField name="data.id" type="string">
  The bookmark ID.
</ResponseField>

## Notes

* This endpoint uses **upsert** - if the job is already bookmarked, it returns the existing bookmark ID instead of creating a duplicate.
* The `jobSource` must match the job type: `DIRECT` for platform jobs, `SCRAPED` for external jobs.

## Error Responses

### 400 Bad Request - Validation Error

```json theme={null}
{
  "success": false,
  "error": {
    "message": ["jobId must be a UUID"],
    "statusCode": 400,
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/jobs/bookmark",
    "method": "POST",
    "details": "Bad Request"
  }
}
```

### 401 Unauthorized

```json theme={null}
{
  "success": false,
  "error": {
    "message": "Unauthorized",
    "statusCode": 401,
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/jobs/bookmark",
    "method": "POST",
    "details": "Unauthorized"
  }
}
```

### 403 Forbidden

```json theme={null}
{
  "success": false,
  "error": {
    "message": "Forbidden resource",
    "statusCode": 403,
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/jobs/bookmark",
    "method": "POST",
    "details": "Forbidden"
  }
}
```

### 404 Not Found

```json theme={null}
{
  "success": false,
  "error": {
    "message": "Job not found",
    "statusCode": 404,
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/jobs/bookmark",
    "method": "POST",
    "details": "Not Found"
  }
}
```

## Example

```bash theme={null}
curl -X POST http://localhost:3000/api/v1/jobs/bookmark \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"jobId": "1b6a74d1-d9aa-4e71-81b6-51d3187e5d93", "jobSource": "SCRAPED"}'
```
