Admin API
Internal admin endpoints for managing shops, API keys, syncs, and exports across all merchants.
The Admin API provides internal-only endpoints for managing all shops and admin keys. Admin endpoints require an admin API key (spf_admin_sk_...).
Admin keys cannot access merchant endpoints (/v1/shop, /v1/products, etc.), and merchant keys cannot access admin endpoints. This boundary is enforced at the controller level.
Rate limiting
Admin API requests are limited to 60 requests per minute per API key (vs. 120/min for merchant keys).
Admin key management
List admin keys
/v1/admin/keys Returns all active admin API keys.
Required scope: read_admin
Create an admin key
/v1/admin/keys Creates a new admin API key. The raw key is returned once in the response.
Required scope: write_admin
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | "Admin key" | Display name for the key. |
scopes | string[] | ["read_admin", "write_admin"] | Scopes to grant. |
Request
curl -X POST https://app.simpleproductfeeds.com/v1/admin/keys \
-H "Authorization: Bearer spf_admin_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "CI/CD Admin Key", "scopes": ["read_admin", "write_admin"]}'
Response
{
"data": {
"id": 5,
"object": "admin_key",
"name": "CI/CD Admin Key",
"key_prefix": "spf_admin_sk",
"scopes": ["read_admin", "write_admin"],
"raw_key": "spf_admin_sk_a1b2c3d4e5...",
"request_count": 0,
"created_at": "2026-03-12T10:00:00Z"
}
}
Revoke an admin key
/v1/admin/keys/:kid Revokes an admin API key. This is irreversible.
Required scope: write_admin
Shop management
List shops
/v1/admin/shops Returns a paginated list of all shops.
Required scope: read_admin
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number. |
per_page | integer | 25 | Results per page (max 100). |
search | string | — | Filter by Shopify domain (partial match). |
Get a shop
/v1/admin/shops/:id Returns detailed information about a single shop.
Required scope: read_admin
List API keys for a shop
/v1/admin/shops/:shop_id/api_keys Returns all merchant API keys for a shop (excludes admin keys).
Required scope: read_admin
Create an API key for a shop
/v1/admin/shops/:shop_id/api_keys Creates a new merchant API key for a shop. The raw key is returned once in the response.
Required scope: write_admin
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | "Admin-created key" | Display name for the key. |
scopes | string[] | ["full_access"] | Scopes to grant. |
Revoke an API key
/v1/admin/shops/:shop_id/api_keys/:kid Revokes a merchant API key with reason admin_revoked.
Required scope: write_admin
Trigger a sync for a shop
/v1/admin/shops/:shop_id/syncs Triggers a full feed sync for the specified shop.
Required scope: write_admin
Errors
| Status | Code | Description |
|---|---|---|
| 409 | export_in_progress | An export is already running for this shop. |
Get latest sync for a shop
/v1/admin/shops/:shop_id/syncs/latest Returns the most recent sync for a shop.
Required scope: read_admin
List exports for a shop
/v1/admin/shops/:shop_id/exports Returns a paginated list of exports for a shop.
Required scope: read_admin
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number. |
per_page | integer | 25 | Results per page (max 100). |