# Quickstart

Make your first API call in five minutes, from creating a key to reading a product back.

Source: https://getolet.com/resources/developers/quickstart/
Updated: 2026-10-15

Create an API key, call `GET /me` to check it works, then list, create, and read back a product. Five calls, five minutes.

## Step 1: create a key

In the back office, go to Integrations > API & apps and create a key. Choose the scopes it needs; for this walkthrough pick `catalog:read` and `catalog:write`. The plaintext key is shown once, so copy it somewhere safe.

## Step 2: check the key works

Call `GET /me`. It returns the store this key belongs to, the scopes it carries, and its own id and name, so it doubles as a connection test.

```bash
curl https://api.oletapp.com/your-store/v1/me \
  -H "Authorization: Bearer olet_live_YOUR_API_KEY"
```

```json
{
  "data": {
    "store_name": "Your Store",
    "domain_prefix": "your-store",
    "scopes": ["catalog:read", "catalog:write"],
    "key": { "id": "...", "name": "Quickstart key" }
  }
}
```

`domain_prefix` is the prefix every other path in this guide uses in place of `your-store`.

## Step 3: list products

`GET /products` returns full product documents, not summaries. Add `?limit=1` to keep the first response short.

```bash
curl "https://api.oletapp.com/your-store/v1/products?limit=1" \
  -H "Authorization: Bearer olet_live_YOUR_API_KEY"
```

```json
{
  "data": [
    { "id": "...", "name": "Existing product", "sku": "SKU-001", "retail_price": 1999, "codes": [], "tags": [], "version": "..." }
  ],
  "next_cursor": "...",
  "has_more": true
}
```

See [pagination and polling](/resources/developers/pagination-and-polling/) for what `next_cursor` and `has_more` mean.

## Step 4: create a product

Only `name` and `retail_price` are required. `retail_price` is an integer number of cents, never a decimal dollar amount, so $12.99 is `1299`. Leave out `sku` and OLET generates one that starts with `PRD-`.

```bash
curl -X POST https://api.oletapp.com/your-store/v1/products \
  -H "Authorization: Bearer olet_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Cold brew concentrate", "retail_price": 1299}'
```

```json
{
  "data": {
    "id": "...",
    "name": "Cold brew concentrate",
    "sku": "PRD-K3M9QX",
    "retail_price": 1299,
    "active": true,
    "version": "..."
  }
}
```

See [money and quantities](/resources/developers/money-and-quantities/) for the full rule on cents. To create a product with its barcodes, tags and suppliers in the same request, see [write a whole product in one request](/resources/developers/write-a-product/).

## Step 5: read it back

Use the `id` from step 4 with `GET /products/{id}`.

```bash
curl https://api.oletapp.com/your-store/v1/products/PRODUCT_ID \
  -H "Authorization: Bearer olet_live_YOUR_API_KEY"
```

```json
{
  "data": {
    "id": "PRODUCT_ID",
    "name": "Cold brew concentrate",
    "sku": "PRD-K3M9QX",
    "retail_price": 1299,
    "active": true,
    "codes": [],
    "tags": [],
    "suppliers": [],
    "variant_attributes": [],
    "components": [],
    "version": "..."
  }
}
```

## Where to go next

See [authentication](/resources/developers/authentication/) for the full scope table and OAuth, or the full [API reference](/resources/developers/reference/) for every field on every operation. If you are building with an AI tool, see [Build with AI](/resources/developers/build-with-ai/).
