# Sandbox Environment (https://eulabel.eu/docs/documentation/get-started/sandbox)

> Fetch the complete documentation index at: https://eulabel.eu/docs/llms.txt
> Use this file to discover all available pages before exploring further.
> Full content: https://eulabel.eu/docs/llms-full.txt
> Append .md to any page URL for markdown, or send Accept: text/markdown.



The sandbox environment lets you experiment with the API without affecting production data.

> **Note**
> Sandbox data is reset periodically. Do not rely on it for persistent storage or integration tests that require stable identifiers.

At a glance [#at-a-glance]

* **Base URL**: `https://sandbox.api.eulabel.eu/v1`
* **Keys**: `sk_test_...`
* **Best for**: building the integration flow before you touch production.

Sandbox endpoint [#sandbox-endpoint]
```text
https://sandbox.api.eulabel.eu/v1
```
Use sandbox API keys (prefixed with `sk_test_`) to authenticate.

Pre-populated test data [#pre-populated-test-data]

The sandbox includes sample products ready to use:

- [Mateus Rosé](https://eulabel.eu/docs/knowledge-base/guides/wine-e-label) — GTIN 5601012011050 (wine) — great for quick end-to-end tests
- [Sandeman Porto Tawny](https://eulabel.eu/docs/knowledge-base/guides/wine-e-label) — GTIN 5601012012200 (wine) — good for passport retrieval and QR testing
- [Gazela Vinho Verde](https://eulabel.eu/docs/knowledge-base/guides/wine-e-label) — GTIN 5601012013900 (wine) — useful for validation + link resolution
Sandbox vs Production [#sandbox-vs-production]

| Feature          | Sandbox            | Production      |
| ---------------- | ------------------ | --------------- |
| API key prefix   | `sk_test_`         | `sk_live_`      |
| Data persistence | Reset periodically | Permanent       |
| Rate limits      | Relaxed            | Standard        |
| QR codes         | Not scannable      | Live resolution |
| Webhooks         | Test deliveries    | Real deliveries |

Getting a sandbox API key [#getting-a-sandbox-api-key]

Log in to the [EUlabel Dashboard](https://app.eulabel.eu).
Navigate to **Settings > API Keys**.
Click **Create Key** and select the **Sandbox** environment.
Copy the key -- it is only shown once.
Testing with the sandbox [#testing-with-the-sandbox]

### CURL

```bash
export EULABEL_API_KEY="sk_test_..."

# List pre-populated products
curl https://sandbox.api.eulabel.eu/v1/products \
  -H "Authorization: Bearer $EULABEL_API_KEY"

# Create a test product
curl -X POST https://sandbox.api.eulabel.eu/v1/products \
  -H "Authorization: Bearer $EULABEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Test Wine","category":"wine","brand":"TestBrand","gtin":"4006381333931"}'
```
### JavaScript

```javascript
const EULABEL_API_KEY = process.env.EULABEL_API_KEY;
const BASE = 'https://sandbox.api.eulabel.eu/v1';

// List pre-populated products
const products = await fetch(`${BASE}/products`, {
  headers: { 'Authorization': `Bearer ${EULABEL_API_KEY}` },
}).then(r => r.json());

// Create a test product
const newProduct = await fetch(`${BASE}/products`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${EULABEL_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Test Wine',
    category: 'wine',
    brand: 'TestBrand',
    gtin: '4006381333931',
  }),
}).then(r => r.json());
```
Next steps [#next-steps]

- [Quickstart](https://eulabel.eu/docs/documentation/get-started/quickstart) — Go from zero to a working passport in under 5 minutes
- [GTIN Validation](https://eulabel.eu/docs/knowledge-base/guides/gtin-validation) — Validate, normalize, and troubleshoot barcodes before submission
- [API Reference](https://eulabel.eu/docs/api-reference) — Explore endpoints and request/response schemas

