Start a review refresh job
curl --request POST \
--url https://app.descripio.com/api/v1/reviews/refresh \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
'import requests
url = "https://app.descripio.com/api/v1/reviews/refresh"
payload = {
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({asin: 'B08N5WRWNW', marketplace: 'amazon.de'})
};
fetch('https://app.descripio.com/api/v1/reviews/refresh', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.descripio.com/api/v1/reviews/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asin' => 'B08N5WRWNW',
'marketplace' => 'amazon.de'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.descripio.com/api/v1/reviews/refresh"
payload := strings.NewReader("{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.descripio.com/api/v1/reviews/refresh")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.descripio.com/api/v1/reviews/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}"
response = http.request(request)
puts response.read_body{
"jobId": 2877,
"asin": "B08N5WRWNW",
"status": "queued",
"message": "Review refresh job created successfully",
"estimatedCompletionSeconds": 60
}{
"error": "Invalid ASIN format (must be 10 alphanumeric characters)"
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}{
"error": "Monthly quota exceeded",
"used": 100,
"limit": 100
}{
"error": "Marketplace not authorized for this store",
"hint": "Configure marketplace access in your account settings"
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}API Reference
POST /reviews/refresh
Trigger a review scraping job for an ASIN
POST
/
api
/
v1
/
reviews
/
refresh
Start a review refresh job
curl --request POST \
--url https://app.descripio.com/api/v1/reviews/refresh \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
'import requests
url = "https://app.descripio.com/api/v1/reviews/refresh"
payload = {
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({asin: 'B08N5WRWNW', marketplace: 'amazon.de'})
};
fetch('https://app.descripio.com/api/v1/reviews/refresh', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.descripio.com/api/v1/reviews/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asin' => 'B08N5WRWNW',
'marketplace' => 'amazon.de'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.descripio.com/api/v1/reviews/refresh"
payload := strings.NewReader("{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.descripio.com/api/v1/reviews/refresh")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.descripio.com/api/v1/reviews/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asin\": \"B08N5WRWNW\",\n \"marketplace\": \"amazon.de\"\n}"
response = http.request(request)
puts response.read_body{
"jobId": 2877,
"asin": "B08N5WRWNW",
"status": "queued",
"message": "Review refresh job created successfully",
"estimatedCompletionSeconds": 60
}{
"error": "Invalid ASIN format (must be 10 alphanumeric characters)"
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}{
"error": "Monthly quota exceeded",
"used": 100,
"limit": 100
}{
"error": "Marketplace not authorized for this store",
"hint": "Configure marketplace access in your account settings"
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}{
"error": "Invalid API key",
"message": "Unable to process request. Please retry in a few moments.",
"retryable": true
}POST /api/v1/reviews/refresh
Trigger a review scraping job for an Amazon product.Request
Headers:| Header | Value | Required |
|---|---|---|
| Authorization | Bearer YOUR_API_KEY | Yes |
| Content-Type | application/json | Yes |
{
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
| Field | Type | Required | Description |
|---|---|---|---|
| asin | string | Yes | Amazon ASIN (10 alphanumeric characters) |
| marketplace | string | No | Amazon marketplace (defaults to amazon.de if omitted) |
Response (202 Accepted)
{
"jobId": 2877,
"asin": "B08N5WRWNW",
"status": "queued",
"message": "Review refresh job created successfully",
"estimatedCompletionSeconds": 60
}
| Field | Type | Description |
|---|---|---|
| jobId | number | Unique job ID (use to poll status) |
| asin | string | The ASIN being processed |
| status | string | Always queued for new jobs |
| message | string | Human-readable confirmation |
| estimatedCompletionSeconds | number | Typical completion time (~60 seconds) |
Errors
| Status | Error | Cause | Solution |
|---|---|---|---|
| 400 | Invalid ASIN format | ASIN not 10 alphanumeric characters | Verify ASIN format |
| 401 | Invalid API key | Key doesn’t exist or was revoked | Check your API key |
| 402 | Monthly quota exceeded | Used all refresh jobs for the month | Wait for reset or upgrade plan |
| 403 | Marketplace not authorized | Store doesn’t have marketplace access | Add marketplace in dashboard |
| 429 | Rate limit exceeded | Too many requests per minute | Wait 60 seconds |
| 429 | Too many concurrent jobs | Concurrent job limit reached | Wait for a job to complete |
| 429 | ASIN cooldown active | ASIN was refreshed recently | Wait for cooldown (24h for Free) |
| 500 | service_error | Temporary backend/service issue | Retry after a short delay |
Examples
cURL:curl -X POST https://app.descripio.com/api/v1/reviews/refresh \
-H "Authorization: Bearer dscr_abc123..." \
-H "Content-Type: application/json" \
-d '{
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}'
import requests
response = requests.post(
"https://app.descripio.com/api/v1/reviews/refresh",
headers={"Authorization": "Bearer dscr_abc123..."},
json={
"asin": "B08N5WRWNW",
"marketplace": "amazon.de"
}
)
if response.status_code == 202:
job = response.json()
print(f"Job ID: {job['jobId']}")
else:
print(f"Error: {response.json()}")
const response = await fetch(
'https://app.descripio.com/api/v1/reviews/refresh',
{
method: 'POST',
headers: {
'Authorization': 'Bearer dscr_abc123...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
asin: 'B08N5WRWNW',
marketplace: 'amazon.de'
})
}
);
const job = await response.json();
console.log(`Job ID: ${job.jobId}`);
Notes
- Cooldown: Each ASIN can only be refreshed once per 24 hours (Free tier). Paid plans have shorter cooldowns.
- Caching: Results are cached after job completion. Use
GET /reviewsto fetch without triggering a new job. - Concurrent jobs: The number of jobs you can run simultaneously depends on your plan.
Authorizations
API key passed in Authorization header as Bearer token.
Body
application/json
⌘I