Payouts
Withdrawals. Off unless the site has them switched on.
GET /balance/withdrawal-requests
Pending withdrawal requests
Scope: balance:read, or the broad read. Newest first, by id.
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. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/withdrawal-requests" \
-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 | |
amount | money | |
method | string | |
created_at | timestamp or null | |
site | string |
{
"data": [
{
"id": 1024,
"amount": {
"amount": "12.50",
"currency": "USD"
},
"method": "Payoneer",
"created_at": "2026-10-10T14:03:22Z",
"site": "SEOClerks"
}
],
"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 |
POST /balance/withdrawal-requests
Request a withdrawal
Scope: payouts:write. The broad write grant does not include it. Idempotency-Key is required.
Needs a step-up the member approved on the website for exactly this method and amount (see the Step-up section). Every check is the website's own. Nothing is debited now: the request is paid later, as on the website. The member is emailed. A refused request leaves the step-up unused. Off unless the site has API withdrawals switched on. No route changes a payout destination.
Parameters
| Name | Where | Description |
|---|---|---|
Idempotency-Key required | header | Makes a retry safe. Required on every POST. Must match ^[A-Za-z0-9_.-]{1,64}$. |
Step-Up required | header | The id of a step-up the member approved for exactly this request. Must match ^[1-9][0-9]{0,9}$. |
Request body
| Field | Type | Description |
|---|---|---|
method required | string | One of Payoneer, nowpayments, Veem, Revolut, Coinbase, ChangeNOW. |
amount required | string | Must match ^[0-9]{1,7}(\.[0-9]{1,2})?$. |
Example request
curl -X POST "https://www.seoclerk.com/api/v1/balance/withdrawal-requests" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY" \
-H "Idempotency-Key: createwithdrawalrequest-1" \
-H "Step-Up: 88" \
-H "Content-Type: application/json" \
-d '{"method":"Payoneer","amount":"25.00"}'
Response 201
| Field | Type | Description |
|---|---|---|
id | integer | |
amount | money | |
method | string | |
created_at | timestamp or null | |
site | string |
{
"data": {
"id": 70412,
"amount": {
"amount": "25.00",
"currency": "USD"
},
"method": "Payoneer",
"created_at": "2026-10-10T14:06:40Z",
"site": "www.seoclerk.com"
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
DELETE /balance/withdrawal-requests/{id}
Cancel a pending withdrawal request
Scope: payouts:write. The broad write grant does not include it. Idempotency-Key is optional.
No step-up: a cancel keeps money in the account. A request already being paid cannot be cancelled.
Parameters
| Name | Where | Description |
|---|---|---|
id required | path | At least 1. |
Idempotency-Key | header | Makes a retry safe. Must match ^[A-Za-z0-9_.-]{1,64}$. |
Example request
curl -X DELETE "https://www.seoclerk.com/api/v1/balance/withdrawal-requests/1024" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 204
No body.
Errors
GET /balance/withdrawals
Processed withdrawals
Scope: balance:read, or the broad read. Newest first, by id.
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. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/withdrawals" \
-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 | |
request_id | integer | |
amount | money | |
paid | money | |
method | string | |
created_at | timestamp or null | |
processed_at | timestamp or null |
{
"data": [
{
"id": 1024,
"request_id": 1024,
"amount": {
"amount": "12.50",
"currency": "USD"
},
"paid": {
"amount": "12.50",
"currency": "USD"
},
"method": "Payoneer",
"created_at": "2026-10-10T14:03:22Z",
"processed_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 /me/payout-methods
Payout methods and whether each is ready
Scope: balance:read, or the broad read.
Read only. Destinations are masked and are set on the website. Not paginated.
Parameters
| Name | Where | Description |
|---|---|---|
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/me/payout-methods" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
method | string | |
configured | boolean | |
confirmed | boolean | |
destination | string or null | Masked: enough to recognise, not enough to copy. Always null for Payoneer. |
hold_until | timestamp or null | |
minimum | money | |
maximum | money or null |
{
"data": [
{
"method": "Payoneer",
"configured": true,
"confirmed": true,
"destination": "string",
"hold_until": "2026-10-10T14:03:22Z",
"minimum": {
"amount": "12.50",
"currency": "USD"
},
"maximum": {
"amount": "12.50",
"currency": "USD"
}
}
],
"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 withdrawals_disabled |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
POST /me/step-ups
Ask the member to approve one withdrawal
Scope: payouts:write. The broad write grant does not include it. Idempotency-Key is required.
Returns approve_url. One pending step-up per key and action; a new one replaces it. At most 10 per key per hour.
Parameters
| Name | Where | Description |
|---|---|---|
Idempotency-Key required | header | Makes a retry safe. Required on every POST. Must match ^[A-Za-z0-9_.-]{1,64}$. |
Request body
| Field | Type | Description |
|---|---|---|
action required | string | One of withdrawal. |
method required | string | A payout method, as me/payout-methods lists them. One of Payoneer, nowpayments, Veem, Revolut, Coinbase, ChangeNOW. |
amount required | string | The amount as a string. Must match ^[0-9]{1,7}(\.[0-9]{1,2})?$. |
Example request
curl -X POST "https://www.seoclerk.com/api/v1/me/step-ups" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY" \
-H "Idempotency-Key: createstepup-1" \
-H "Content-Type: application/json" \
-d '{"action":"withdrawal","method":"Payoneer","amount":"25.00"}'
Response 201
| Field | Type | Description |
|---|---|---|
approve_url | string | Only in the response that creates the step-up; shown once. The member opens it logged in on the website. |
id | integer | |
action | string | |
status | string | |
request | object | What the member is asked to approve. |
request.method | string | |
request.amount | string | |
expires_at | timestamp or null |
{
"data": {
"approve_url": "https://www.seoclerk.com/settings/api/approve/su_5b1c...",
"id": 88,
"action": "withdrawal",
"status": "pending",
"request": {
"method": "Payoneer",
"amount": "25.00"
},
"expires_at": "2026-10-10T14:13:22Z"
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
GET /me/step-ups/{id}
Where a step-up stands
Scope: payouts:write. No read scope reaches it. Only the key that asked for the step-up can read it; another key of the same member gets 404.
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/me/step-ups/1024" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
| Field | Type | Description |
|---|---|---|
approve_url | string | Only in the response that creates the step-up; shown once. The member opens it logged in on the website. |
id | integer | |
action | string | |
status | string | |
request | object | What the member is asked to approve. |
request.method | string | |
request.amount | string | |
expires_at | timestamp or null |
{
"data": {
"approve_url": "https://www.seoclerk.com/example",
"id": 1024,
"action": "string",
"status": "pending",
"request": {
"method": "Payoneer",
"amount": "string"
},
"expires_at": "2026-10-10T14:03:22Z"
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
DELETE /me/step-ups/{id}
Withdraw a step-up
Scope: payouts:write. The broad write grant does not include it. Idempotency-Key is optional.
A pending or approved step-up becomes revoked.
Parameters
| Name | Where | Description |
|---|---|---|
id required | path | At least 1. |
Idempotency-Key | header | Makes a retry safe. Must match ^[A-Za-z0-9_.-]{1,64}$. |
Example request
curl -X DELETE "https://www.seoclerk.com/api/v1/me/step-ups/1024" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 204
No body.