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.

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.

Guides using this endpoint

export SKINPRICER_API_KEY="sp_live_•••"

curl -G "https://pricing.skinpricer.com/v1/schema/changes" \
  --data-urlencode "since=1783069455007" \
  -H "Authorization: ApiKey $SKINPRICER_API_KEY"
// No SDK helper for this endpoint yet, so call it directly.
const url = new URL("https://pricing.skinpricer.com/v1/schema/changes");
url.searchParams.set("since", "1783069455007");

const res = await fetch(url, {
  headers: { Authorization: `ApiKey ${process.env.SKINPRICER_API_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());
import os
import requests

res = requests.get(
    "https://pricing.skinpricer.com/v1/schema/changes",
    params={"since": "1783069455007"},
    headers={"Authorization": f"ApiKey {os.environ['SKINPRICER_API_KEY']}"},
    timeout=10,
)
res.raise_for_status()
print(res.json())

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

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" }
    }
  ]
}
Response headers
X-RateLimit-Limit: <per-minute, set by your plan>
X-RateLimit-Remaining: <remaining this minute>
X-RateLimit-Reset: <seconds to reset>
X-RateLimit-Remaining-Month: <left this month, capped plans>
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.