Understanding the structure and format of API responses.
All API responses follow a consistent JSON structure:
{
"success": boolean,
"data": object | array | null,
"message": string,
"meta": {
"timestamp": integer,
"request_id": string
}
}
{
"success": true,
"data": {
"offers": [
{
"offer_id": 12345,
"name": "Complete Survey",
"description": "Answer questions and earn rewards",
"payout": 0.50,
"payout_local": 0.46,
"currency": "EUR",
"category": "survey",
"link": "https://letest.scriptstore.store/click?...",
"image_url": "https://letest.scriptstore.store/offers/12345.jpg",
"countries": ["US", "GB", "CA"],
"platforms": ["web", "mobile"],
"difficulty": "easy",
"time_estimate": "5-10 minutes"
}
],
"total": 45
},
"message": "Offers retrieved successfully",
"meta": {
"timestamp": 1705789234,
"request_id": "req_abc123def456"
}
}
| Field | Type | Description |
|---|---|---|
offer_id |
integer | Unique offer identifier |
name |
string | Offer title |
description |
string | Detailed offer description |
payout |
float | Payout amount in USD |
payout_local |
float | Payout in your app's currency |
currency |
string | Your app's currency code |
category |
string | Offer type: survey, app, game, video, quiz |
link |
string | Tracking URL to redirect users |
image_url |
string | Offer thumbnail image URL |
countries |
array | Available country codes |
platforms |
array | Supported platforms |
difficulty |
string | easy, medium, hard |
time_estimate |
string | Estimated completion time |
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "The provided API key is invalid or has been revoked",
"details": {
"apiKey": "The API key provided is not valid"
}
},
"meta": {
"timestamp": 1705789234,
"request_id": "req_abc123def456"
}
}
| Code | Status | Description |
|---|---|---|
200 |
OK | Request successful |
201 |
Created | Resource created successfully |
400 |
Bad Request | Invalid or missing parameters |
401 |
Unauthorized | Authentication failed |
403 |
Forbidden | Insufficient permissions |
404 |
Not Found | Resource not found |
429 |
Too Many Requests | Rate limit exceeded |
500 |
Server Error | Internal server error |
When applicable, paginated responses include pagination metadata:
{
"success": true,
"data": [ ... ],
"meta": {
"timestamp": 1705789234,
"request_id": "req_abc123",
"pagination": {
"total": 150,
"count": 20,
"per_page": 20,
"current_page": 1,
"total_pages": 8,
"links": {
"next": "https://letest.scriptstore.store/api/v1/offers?page=2"
}
}
}
}
Important information is also provided in response headers:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Total requests allowed per minute |
X-RateLimit-Remaining |
Requests remaining in current window |
X-RateLimit-Reset |
Unix timestamp when the limit resets |
X-Request-ID |
Unique request identifier for debugging |