Trades (Want To Trade)
Read only.
GET /wtt
Search trades, or list your own
Scope: listings:read, or the broad read. Newest first, by id.
Read only: trades can no longer be created.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
mine | query | 1: your own, in any state. One of 0, 1. Default 0. |
category_id | query | At least 1. |
q | query | Matches the title. 2 to 120 characters. |
status | query | Needs mine=1. One of 0, 1, 2, 3, 4. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/wtt" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
member_id | integer | |
title | string | |
description | string | |
category_id | integer | |
budget | money | |
delivery_days | integer | |
created_at | timestamp or null | |
status | integer | 1 live, 4 draft; the others are the owner's own inactive states. |
cancelled | boolean | Closed to new bids. |
tags | string | |
skills | string | |
requirements | string | On wtb. |
offering | string | On wtt. |
images | list of object | |
images[].id | string | Pass back in images to keep it on an edit. |
images[].url | string |
{
"data": [
{
"id": 1024,
"member_id": 1024,
"title": "Logo design",
"description": "A short description.",
"category_id": 1024,
"budget": {
"amount": "12.50",
"currency": "USD"
},
"delivery_days": 1,
"created_at": "2026-10-10T14:03:22Z",
"status": 1,
"cancelled": true,
"tags": "string",
"skills": "string",
"requirements": "string",
"offering": "string",
"images": [
{}
]
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
GET /wtt/{id}
A trade
Scope: listings:read, or the broad read. Live requests, or your own in any state.
Parameters
| Name | Where | Description |
|---|---|---|
id required | path | At least 1. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/wtt/1024" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
| Field | Type | Description |
|---|---|---|
id | integer | |
member_id | integer | |
title | string | |
description | string | |
category_id | integer | |
budget | money | |
delivery_days | integer | |
created_at | timestamp or null | |
status | integer | 1 live, 4 draft; the others are the owner's own inactive states. |
cancelled | boolean | Closed to new bids. |
tags | string | |
skills | string | |
requirements | string | On wtb. |
offering | string | On wtt. |
images | list of object | |
images[].id | string | Pass back in images to keep it on an edit. |
images[].url | string |
{
"data": {
"id": 1024,
"member_id": 1024,
"title": "Logo design",
"description": "A short description.",
"category_id": 1024,
"budget": {
"amount": "12.50",
"currency": "USD"
},
"delivery_days": 1,
"created_at": "2026-10-10T14:03:22Z",
"status": 1,
"cancelled": true,
"tags": "string",
"skills": "string",
"requirements": "string",
"offering": "string",
"images": [
{
"id": "string",
"url": "https://www.seoclerk.com/example"
}
]
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /wtt/{id}/comments
Comments on a trade
Scope: listings:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
id required | path | At least 1. |
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/wtt/1024/comments" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
parent_id | integer or null | |
member_id | integer | |
text | string | |
created_at | timestamp or null | |
updated_at | timestamp or null |
{
"data": [
{
"id": 1024,
"parent_id": 1024,
"member_id": 1024,
"text": "Hello.",
"created_at": "2026-10-10T14:03:22Z",
"updated_at": "2026-10-10T14:03:22Z"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /wtt/{id}/responses
Offers on a trade
Scope: listings:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
id required | path | At least 1. |
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/wtt/1024/responses" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
member_id | integer | |
service_id | integer or null | |
title | string | |
text | string | |
price_public | boolean | |
price | money or null | |
multiple_quantity | boolean | |
created_at | timestamp or null |
{
"data": [
{
"id": 1024,
"member_id": 1024,
"service_id": 1024,
"title": "Logo design",
"text": "Hello.",
"price_public": true,
"price": {
"amount": "12.50",
"currency": "USD"
},
"multiple_quantity": true,
"created_at": "2026-10-10T14:03:22Z"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |