> ## Documentation Index
> Fetch the complete documentation index at: https://docs.descripio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 5-Minute Quick Start

> Get your first API call working

# Quick Start

<Note>
  **Prefer Postman?** Skip the manual steps — import our pre-configured collection and start making real API calls in under a minute.

  [Download Postman Collection →](https://app.descripio.com/descripio-reviews-api.postman_collection.json)

  Import the file into Postman: **File → Import**, paste the URL or drop the downloaded file. Your `baseUrl`, `asin`, `marketplace` variables are pre-filled. Just set your `apiKey`.
</Note>

## Step 1: Get Your API Key

1. Sign up at [app.descripio.com](https://app.descripio.com)
2. Navigate to [**Developer → API Keys**](https://app.descripio.com/developer/api-keys)
3. Click **"Create API Key"**
4. Copy your key (starts with `dscr_`)

> ⚠️ **Save your key securely**. It won't be shown again after creation.

## Step 2: Trigger a Review Refresh

Replace `YOUR_API_KEY` with your actual key:

```bash theme={null}
curl -X POST https://app.descripio.com/api/v1/reviews/refresh \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "asin": "B08N5WRWNW",
    "marketplace": "amazon.de"
  }'
```

**Response** (HTTP 202 Accepted):

```json theme={null}
{
  "jobId": 2877,
  "asin": "B08N5WRWNW",
  "status": "queued",
  "message": "Review refresh job created successfully",
  "estimatedCompletionSeconds": 60
}
```

## Step 3: Poll Job Status (With Timeout)

**Python (Recommended)**:

```python theme={null}
import requests
import time

API_KEY = "YOUR_API_KEY"
job_id = 2877
max_attempts = 24  # 2 minutes max (5s interval)
attempt = 0

while attempt < max_attempts:
    response = requests.get(
        f"https://app.descripio.com/api/v1/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    job = response.json()
    status = job.get("status")

    if status == "completed":
        print("Job complete!")
        break
    elif status == "failed":
        print("Job failed!")
        break
    elif status == "unknown":
        print("Unexpected job status. Please retry.")
        break

    print(f"Status: {status}, waiting...")
    time.sleep(5)  # Wait 5 seconds before next poll
    attempt += 1

if attempt >= max_attempts:
    print("Timeout: Job took longer than expected")
```

Possible job statuses: `queued`, `processing`, `completed`, `failed`, `unknown`.

**cURL (Manual polling)**:

```bash theme={null}
curl https://app.descripio.com/api/v1/jobs/2877 \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response** (when complete):

```json theme={null}
{
  "jobId": 2877,
  "asin": "B08N5WRWNW",
  "productTitle": "Example Product Title",
  "status": "completed",
  "createdAt": "2026-02-02T10:30:00.000Z",
  "updatedAt": "2026-02-02T10:31:05.000Z"
}
```

## Step 4: Fetch Reviews

```bash theme={null}
curl "https://app.descripio.com/api/v1/reviews?asin=B08N5WRWNW" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response**:

```json theme={null}
{
  "asin": "B08N5WRWNW",
  "title": "Example Product Title",
  "imageUrl": "https://m.media-amazon.com/images/...",
  "marketplace": "amazon.de",
  "reviewCount": 156,
  "reviews": [
    {
      "id": 12345,
      "amazonReviewId": "R1ABC123DEF",
      "title": "Great product!",
      "content": "I've been using this for a month and...",
      "date": "2026-01-15T00:00:00.000Z",
      "isTopReview": true,
      "country": "DE",
      "scrapedAt": "2026-02-02T10:31:00.000Z"
    }
  ],
  "lastScraped": "2026-02-02T10:31:00.000Z",
  "cached": true
}
```

If the ASIN has no cached data yet, the endpoint returns **404 Not Found**:

```json theme={null}
{
  "asin": "B08N5WRWNW",
  "reviews": [],
  "cached": false,
  "message": "No cached data. Create a refresh job first."
}
```

## Next Steps

* [Authentication Guide →](/authentication)
* [Error Handling →](/guides/error-handling)
* [Full API Reference →](/api-reference/overview)
