# CV.lv — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search for job listings on CV.lv and access detailed job descriptions, categories, locations, and information about top employers. Find the right opportunity by browsing available positions across different industries and regions.

**Category:** Jobs | **Website:** [cv.lv/](https://cv.lv/) | **Docs:** [parse.bot/marketplace/0645b8ca-5e93-4ea8-9532-80963cfb7ae1/cv-lv-api](https://parse.bot/marketplace/0645b8ca-5e93-4ea8-9532-80963cfb7ae1/cv-lv-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get directory hits

Return directory data with job counts for locations, categories, or popular links. Each item includes multilingual titles (Latvian, English, Russian), short URLs, and a current job count. Useful for building navigation or discovering which locations/categories have active postings.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `type` | string | No | Type of directory to retrieve. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/get-directory-hits \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"type":"<string>"}'
```

### Get job details

Fetch full details of a specific job posting by vacancy ID. Returns comprehensive information including the formatted job description (HTML sections), employer profile, contact person, salary highlights, work conditions, and a list of similar vacancies. The vacancy_id is the numeric ID returned by search_jobs.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `employer_slug` | string | No | URL slug of the employer name; defaults to 'employer' if unknown. |
| `job_slug` | string | No | URL slug of the job title; defaults to 'job' if unknown. |
| `vacancy_id` | string | Yes | The unique numeric ID of the job vacancy (from search_jobs results). |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/get-job-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"employer_slug":"<string>","job_slug":"<string>","vacancy_id":"<string>"}'
```

### Get top employers

Return a list of top employers actively posting on CV.lv. Each entry includes the company name, a short description, logo/cover image file IDs, and the current number of active vacancies.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/get-top-employers \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List job categories

Return all available job category names and their internal numeric IDs. The returned mapping has numeric ID strings as keys and category code strings as values. Use these codes in search_jobs' categories parameter.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/list-job-categories \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List locations

Return all available work location options including towns (cities), counties (regions), and countries. Use town IDs or county IDs in the search_jobs endpoint's towns/counties parameters.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/list-locations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Search jobs

Search and filter job listings on CV.lv. Returns vacancy results along with facet counts for categories, locations, languages, and work times. Supports filtering by keywords, category, location, salary range, remote work, and work time. Results are sorted by the chosen sorting criterion. Pagination is manual via offset/limit — the SDK does not auto-paginate this endpoint.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `categories` | string | No | Comma-separated list of category codes to filter by. |
| `counties` | string | No | Comma-separated list of numeric county IDs. |
| `employer_id` | integer | No | Filter by a specific employer's numeric ID. |
| `is_hourly` | boolean | No | Filter for hourly salary jobs only. |
| `is_remote` | boolean | No | Filter for remote work positions only. |
| `keywords` | string | No | Search keywords matching position title, company name, or job content. |
| `languages` | string | No | Comma-separated list of language ISO codes (e.g. en,lv,ru). |
| `limit` | integer | No | Maximum number of results to return per page. |
| `offset` | integer | No | Number of results to skip for pagination. |
| `salary_from` | integer | No | Minimum salary amount filter. |
| `salary_type` | string | No | Salary period type. |
| `sorting` | string | No | Sort order for results. |
| `towns` | string | No | Comma-separated list of numeric town IDs (e.g. 543 for Riga). |
| `work_times` | string | No | Comma-separated list of work time codes. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/cv-lv/search-jobs \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"categories":"<string>","counties":"<string>","employer_id":"<integer>","is_hourly":"<boolean>","is_remote":"<boolean>","keywords":"<string>","languages":"<string>","limit":"<integer>","offset":"<integer>","salary_from":"<integer>","salary_type":"<string>","sorting":"<string>","towns":"<string>","work_times":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.