---
title: "Admin SDK quickstart for @spree/admin-sdk"
sidebarTitle: Quickstart
description: "Install and configure @spree/admin-sdk, the official TypeScript client for the Spree Admin API v3, to manage products, orders, customers, and stock."
---

[`@spree/admin-sdk`](https://www.npmjs.com/package/@spree/admin-sdk) is the official TypeScript SDK for the [Admin API v3](../../../api-reference/admin-api/introduction.md) — the back-office counterpart to [`@spree/sdk`](../quickstart.md). Use it to build integrations, automations, internal tools, and custom admin UIs: manage products, orders, customers, stock, promotions, webhooks, and more.

> **WARNING:** The Admin SDK is in **Developer Preview** on the `0.x` line and published under the `next` dist-tag. The API surface may change between minor versions — check the [changelog](https://github.com/spree/spree/blob/main/packages/admin-sdk/CHANGELOG.md) when updating. It requires Spree 5.5 or newer.

## Installation

```bash
npm install @spree/admin-sdk@next
```

## Quick start

Create a client with a [secret API key](authentication.md) (server-to-server) and start calling resources:

```typescript
import { createAdminClient } from '@spree/admin-sdk'

const client = createAdminClient({
  baseUrl: 'https://your-store.com',
  secretKey: process.env.SPREE_SECRET_KEY, // sk_xxx — server-side only
})

// List recent completed orders
const { data: orders, meta } = await client.orders.list({
  status_eq: 'complete',
  sort: '-completed_at',
  limit: 25,
})

// Create a purchasable product — pricing lives on variants
const product = await client.products.create({
  name: 'Aero Hoodie',
  status: 'active',
  tags: ['new-arrivals'],
  variants: [
    {
      sku: 'AERO-HOODIE',
      prices: [{ currency: 'USD', amount: '59.00' }],
    },
  ],
})
```

Every method is fully typed — responses use types generated from the API serializers:

```typescript
import type { Order, PaginatedResponse } from '@spree/admin-sdk'

const page: PaginatedResponse<Order> = await client.orders.list()
```

> **NOTE:** Secret keys grant back-office access — never ship them in browser code. For browser-based admin apps, use [JWT cookie authentication](authentication.md#jwt--cookie-authentication-browser-apps) instead.

## Learn more


  - [Authentication](authentication.md) — Secret keys with scopes for servers, JWT + httpOnly refresh cookie for browser apps.
  - [Resources](resources.md) — The full resource map — products, orders, customers, stock, promotions, webhooks, and more.
  - [Querying & Errors](querying-and-errors.md) — Filtering, sorting, pagination, prefixed IDs, and structured error handling.
  - [Admin API Reference](../../../api-reference/admin-api/introduction.md) — The underlying REST API the SDK wraps — every endpoint, parameter, and response shape.


> **TIP:** Adding your own resources? The [`spree generate api_resource`](../../tutorial/model-and-api.md) generator scaffolds Admin API endpoints (model, serializers, controllers, specs) in one command, and the [extending guide](../extending.md) shows how to call custom endpoints from the SDK.
