Skip to main content
GET/v1/schema/changesDEVELOPER+

/v1/schema/changes

Incremental catalog sync for schema mirrors: items added or changed strictly after since, keyset-paginated. Item versions only bump when content actually changes, so a quiet day costs a few hundred bytes instead of the full snapshot. Store the returned schemaVersion as your next since.

Per-item versions only bump when the record's content actually changes, so polling costs almost nothing on quiet days. Page with nextCursor while hasMore, then store the returned schemaVersion as your next since. The registries sidecar carries any rarity/collection/container entries the returned items reference, so a delta consumer never drifts from the registries without refetching the snapshot.

Parameters

sincestringrequired
Query. A previously returned schemaVersion (ms epoch) or an ISO-8601 timestamp.
cursorstringoptional
Query. nextCursor from the previous page; takes precedence over since for positioning.
limitintegeroptional
Query. Max items per page, 1 to 5000. Default 1000.

Response fields

SchemaChangesItems added or changed after since, keyset-paginated.
schemaVersioninteger
Current catalog-wide version. Store as your next since.
sinceinteger
The parsed since position (ms epoch).
countinteger
Items in this page.
hasMoreboolean
Whether another page exists.
nextCursorstringnullable
Pass back as cursor to fetch the next page.
The changed items, full records.
registriesobjectnullable
Registry entries referenced by the returned items; omitted when none changed.

Response 200

{
  "schemaVersion": 1783069455007,
  "since": 1782900000000,
  "count": 1,
  "hasMore": false,
  "nextCursor": null,
  "items": [
    {
      "id": "cmlofbol90hb801yozu37irb8",
      "marketHashName": "Fever Case",
      "slug": "fever-case",
      "category": "container",
      "releaseDate": "2025-02-04T00:00:00.000Z",
      "image": "https://community.fastly.steamstatic.com/economy/image/...",
      "ids": { "itrade": "ZG39o2", "swapgg": "68e9842efed1b98d8ba01b23:5" }
    }
  ]
}

Errors

400since is missing or is neither a schemaVersion nor an ISO-8601 timestamp; or limit is out of range.
401Missing Authorization header, unsupported scheme, or a key that is unknown, inactive, expired, or revoked.
403Valid key, but the subscription is inactive/expired or the plan does not include this endpoint.
429Rate limit exceeded; see Retry-After + X-RateLimit-* headers. Pooled per account across all keys.
5xxUpstream snapshot unavailable or a server-side issue. Retry with backoff.
curl "https://pricing.skinpricer.com/v1/schema/changes" \
  -H "Authorization: ApiKey sk_live_•••••••••••"

Authenticated endpoint — call it with your API key from your own client (see the code sample).

Response headers
X-RateLimit-Limit: <per-minute, set by your plan>
X-RateLimit-Remaining: <remaining this minute>
X-RateLimit-Reset: <seconds to reset>
X-Request-ID: req_xxxxxxxxxxxxxxxx

Usage & licensing

Access to the API and its data is governed by our Terms of Service. You may not resell or redistribute the data, use it to build a competing service, or exceed your plan’s rate limits, and you must attribute SkinPricer as the source wherever the Terms permit you to display it. Abuse may be throttled or suspended.