docs/api-reference/admin-api/introduction.mdx
import { Since } from '/snippets/since.mdx';
<Since version="5.5" />The Admin API is a REST API for managing Spree stores programmatically — products, orders, customers, fulfillments, payments, and more. It is intended for backend integrations, custom admin tooling, and automation.
All routes are prefixed with /api/v3/admin. During development the API is available under http://localhost:3000/api/v3/admin. For production, replace http://localhost:3000 with your Spree application URL.
| Admin API | Store API | |
|---|---|---|
| Purpose | Manage store data | Power storefronts |
| Audience | Staff users, backend integrations | Customers, storefronts |
| Authentication | Secret API key (sk_…) or admin JWT | Publishable API key (pk_…), customer JWT, order token |
| Permissions | API key scopes (API key authentication) or Admin Staff permission sets | Customer can only read/modify their own data |
| Write operations | Full CRUD on most resources | Limited to the current customer's cart, addresses, profile |
If you're building a storefront, use the Store API. The Admin API exposes administrative operations that should never be invoked from a browser.
We recommend using @spree/admin-sdk to interact with the Admin API. It provides typed clients, automatic retries, and idempotency support.
npm install @spree/admin-sdk
# or
yarn add @spree/admin-sdk
# or
pnpm add @spree/admin-sdk
import { createAdminClient } from '@spree/admin-sdk'
const client = createAdminClient({
baseUrl: 'http://localhost:3000',
secretKey: 'sk_xxx',
})
const { data: orders } = await client.orders.list({
status_eq: 'complete',
limit: 25,
})
Every endpoint can also be called with the Spree CLI — a generic HTTP client (get/post/patch/delete) built into @spree/cli. It's the fastest way to explore the API from a terminal or drive it from scripts and AI agents, with zero-config credentials in local development:
spree api get /orders -q status_eq=complete --limit 25
Each endpoint page below shows the matching Spree CLI command alongside the SDK example. To browse the whole surface offline, use spree api endpoints and spree api schema "<METHOD> <path>".
Before integrating, read:
expand