# Upwork — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://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.

> Access comprehensive details about Upwork job postings, including descriptions, budgets, required skills, client information, and engagement metrics to help you find and evaluate opportunities. Monitor job activity and client profiles to make informed decisions about which projects to pursue.

**Category:** Jobs | **Website:** [upwork.com/](https://upwork.com/) | **Docs:** [parse.bot/marketplace/bab0726c-3130-4f0d-a4fa-8a8a5f22c072/upwork-com-api](https://parse.bot/marketplace/bab0726c-3130-4f0d-a4fa-8a8a5f22c072/upwork-com-api)

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

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/upwork/`
**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

### Search freelancers

Full-text search over Upwork's freelancer talent pool. Returns paginated results with detailed profile information including skills, hourly rate, job success score, location, and earnings. Pagination via integer page counter; each page returns up to per_page results. The query matches freelancer titles, descriptions, and skills.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-based) |
| `per_page` | integer | No | Number of results per page (1-50) |
| `query` | string | No | Search keyword(s) to find freelancers by title, description, or skills |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/upwork/search-freelancers \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","per_page":"<integer>","query":"<string>"}'
```

### Search jobs

Full-text search over Upwork job postings. Returns paginated results with job title, description snippet, budget info, required skills, experience level, duration, and posting date. Pagination via integer page counter; each page returns up to per_page results (max 50). Results are parsed from Upwork's server-rendered search page and may be subject to intermittent Cloudflare challenges.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-based) |
| `per_page` | integer | No | Number of results per page (1-50) |
| `query` | string | No | Search keyword(s) to find job postings by title, description, or skills |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/upwork/search-jobs \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","per_page":"<integer>","query":"<string>"}'
```

## Next steps

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