# Airtasker — 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.

> Search and browse Airtasker tasks by location, category, price, and keywords, then access detailed task information and user profiles. Get location suggestions and category recommendations to discover available work and service opportunities in your area.

**Category:** Marketplaces | **Website:** [airtasker.com/](https://airtasker.com/) | **Docs:** [parse.bot/marketplace/904dc011-90fa-4e17-88d3-0a9c11fe39ff/airtasker-com-api](https://parse.bot/marketplace/904dc011-90fa-4e17-88d3-0a9c11fe39ff/airtasker-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/airtasker/`
**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

### Browse categories

List all available task categories with their display names and category IDs. Use the carl_id values to filter search_tasks by category. Returns the complete static category list in a single page.

**Estimated cost:** Metered

_No parameters required._

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

### Get location details

Get latitude, longitude, and display name for a location identified by external_id from get_location_suggestions. Use the returned coordinates as lat/lon in search_tasks.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `external_id` | string | Yes | The external_id from a get_location_suggestions result |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/airtasker/get-location-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"external_id":"<string>"}'
```

### Get location suggestions

Search for locations by text query. Returns a list of matching place suggestions with name, source, and external_id. Pass external_id to get_location_details for coordinates.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Text to search for a location (e.g. 'Perth WA', 'Sydney NSW') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/airtasker/get-location-suggestions \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"query":"<string>"}'
```

### Get task detail

Retrieve full details for a single task by its slug. Returns the task card (title, description, location, date info, images), offers/questions sections, and action links. The slug is available from search_tasks results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `task_slug` | string | Yes | URL slug of the task, obtained from search_tasks results (e.g. 'cleaner-required-x01kttfy06ktyd79ag5ewtkdvah') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/airtasker/get-task-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"task_slug":"<string>"}'
```

### Get user profile

Retrieve a user's public profile including profile card, reviews, stats (rating, completion rate), and location. The user_id is available from search_tasks profiles.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `task_id` | string | No | Optional task slug to contextualize the profile view |
| `user_id` | string | Yes | Numeric user ID (e.g. '5153810'), available from search_tasks profiles[*].id |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/airtasker/get-user-profile \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"task_id":"<string>","user_id":"<string>"}'
```

### Search tasks

Search for tasks with filters on location, category, price range, task type, and keywords. Returns task summaries with poster profiles and location data. Paginates via a time-based cursor (after_time from meta.latest_result). Each page returns up to `limit` tasks; set limit to control page size.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `after_time` | string | No | Pagination cursor: ISO 8601 timestamp from meta.latest_result of the previous page |
| `carl_ids` | string | No | Category IDs to filter by, comma-separated (e.g. '1' for General Cleaning, '57' for Gardening Services). Obtain IDs from browse_categories. |
| `lat` | string | No | Latitude for location-based search (decimal string) |
| `limit` | integer | No | Number of tasks per page (max results returned per request) |
| `location_name` | string | No | Display name of the search location |
| `lon` | string | No | Longitude for location-based search (decimal string) |
| `max_price` | integer | No | Maximum task budget in AUD |
| `min_price` | integer | No | Minimum task budget in AUD |
| `radius` | integer | No | Search radius in meters from the lat/lon center |
| `search_term` | string | No | Keyword to search for in task titles and descriptions |
| `sort_by` | string | No | Sort order for results |
| `task_states` | string | No | Filter by task state |
| `task_types` | string | No | Filter by task type |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/airtasker/search-tasks \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"after_time":"<string>","carl_ids":"<string>","lat":"<string>","limit":"<integer>","location_name":"<string>","lon":"<string>","max_price":"<integer>","min_price":"<integer>","radius":"<integer>","search_term":"<string>","sort_by":"<string>","task_states":"<string>","task_types":"<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.