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

GET /v1/admin/keys

Returns all active admin API keys.

Required scope: read_admin

Create an admin key

POST /v1/admin/keys

Creates a new admin API key. The raw key is returned once in the response.

Required scope: write_admin

Parameters

ParameterTypeDefaultDescription
namestring"Admin key"Display name for the key.
scopesstring[]["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

DELETE /v1/admin/keys/:kid

Revokes an admin API key. This is irreversible.

Required scope: write_admin


Shop management

List shops

GET /v1/admin/shops

Returns a paginated list of all shops.

Required scope: read_admin

Parameters

ParameterTypeDefaultDescription
pageinteger1Page number.
per_pageinteger25Results per page (max 100).
searchstringFilter by Shopify domain (partial match).

Get a shop

GET /v1/admin/shops/:id

Returns detailed information about a single shop.

Required scope: read_admin


List API keys for a shop

GET /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

POST /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

ParameterTypeDefaultDescription
namestring"Admin-created key"Display name for the key.
scopesstring[]["full_access"]Scopes to grant.

Revoke an API key

DELETE /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

POST /v1/admin/shops/:shop_id/syncs

Triggers a full feed sync for the specified shop.

Required scope: write_admin

Errors

StatusCodeDescription
409export_in_progressAn export is already running for this shop.

Get latest sync for a shop

GET /v1/admin/shops/:shop_id/syncs/latest

Returns the most recent sync for a shop.

Required scope: read_admin


List exports for a shop

GET /v1/admin/shops/:shop_id/exports

Returns a paginated list of exports for a shop.

Required scope: read_admin

Parameters

ParameterTypeDefaultDescription
pageinteger1Page number.
per_pageinteger25Results per page (max 100).