# 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. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-airtasker-com-api-904dc011/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## 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/parse-airtasker-com-api-904dc011/browse_categories \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-airtasker-com-api-904dc011/get_location_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-airtasker-com-api-904dc011/get_location_suggestions \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-airtasker-com-api-904dc011/get_task_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-airtasker-com-api-904dc011/get_user_profile \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-airtasker-com-api-904dc011/search_tasks \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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>"}'
```
