Back to Spree

Admin SDK quickstart for @spree/admin-sdk

docs/developer/sdk/admin/quickstart.mdx

5.5.03.1 KB
Original Source

@spree/admin-sdk is the official TypeScript SDK for the Admin API v3 — the back-office counterpart to @spree/sdk. 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. </Warning>

Installation

bash
npm install @spree/admin-sdk@next

Quick start

Create a client with a secret API key (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 Admin-prefixed types generated from the API serializers:

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

const page: PaginatedResponse<AdminOrder> = 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](/developer/sdk/admin/authentication#jwt--cookie-authentication-browser-apps) instead. </Note>

Learn more

<CardGroup cols={2}> <Card title="Authentication" icon="key" href="/developer/sdk/admin/authentication"> Secret keys with scopes for servers, JWT + httpOnly refresh cookie for browser apps. </Card> <Card title="Resources" icon="boxes" href="/developer/sdk/admin/resources"> The full resource map — products, orders, customers, stock, promotions, webhooks, and more. </Card> <Card title="Querying & Errors" icon="filter" href="/developer/sdk/admin/querying-and-errors"> Filtering, sorting, pagination, prefixed IDs, and structured error handling. </Card> <Card title="Admin API Reference" icon="book" href="/api-reference/admin-api/introduction"> The underlying REST API the SDK wraps — every endpoint, parameter, and response shape. </Card> </CardGroup> <Tip> Adding your own resources? The [`spree generate api_resource`](/developer/tutorial/api) generator scaffolds Admin API endpoints (model, serializers, controllers, specs) in one command, and the [extending guide](/developer/sdk/extending) shows how to call custom endpoints from the SDK. </Tip>