Sellvik / developers
Quickstart

Fire your first request

A health check, then your first authenticated call.

Once you have the keys from the previous step, let's confirm everything works.

Health check (no auth)

curl https://api.sellvik.app/api/health

Expected response:

{
  "status": "ok",
  "timestamp": "2026-05-27T13:45:00.000Z"
}

If you see 503, the database is down. Check status.sellvik.com.

Your first authenticated call (admin key)

List the products in your shop:

curl https://api.sellvik.app/api/v1/admin/products \
  -H "Authorization: Bearer <admin-key>"

Expected response:

{
  "items": [
    {
      "id": "f3a7…",
      "slug": "kurti-emerald",
      "name": "Emerald Kurti",
      "price": "1490.00",
      "stock": 12,
      "isActive": true
    }
  ],
  "nextCursor": null
}

If the shop is empty, items is [] and nextCursor is null. That's a successful call.

Your first authenticated call (publishable key)

The publishable equivalent — same endpoint surface, smaller capability:

curl https://api.sellvik.app/api/v1/store/products \
  -H "X-Sellvik-Key: <publishable-key>"

Note the differences:

  • Header: publishable keys travel in X-Sellvik-Key, not Authorization. This keeps Authorization available for customer JWTs on the same request.
  • Path: /v1/store/* instead of /v1/admin/*. The store namespace returns only public-safe fields (no costPrice, no inventoryAdjustment history).

Errors you might see

StatusCodeWhat to do
401missing_or_malformed_authorizationYou forgot the header, or it's missing Bearer .
401invalid_keyThe key was revoked, never existed, or is for the wrong shop.
401missing_publishable_keyForgot X-Sellvik-Key on a /v1/store/* call.
403insufficient_scopeAdmin key missing the scope the route requires.
403headless_mode_disabledEnable headless mode in the panel.
429rate_limitedBack off. The Retry-After header tells you for how long.

The full error shape is documented in Errors.

Continue with Fetch products →.

On this page