Developer API

The public API is available under /api/v1. It is unauthenticated, read-only, and intended for apps and websites that can cache aggressively.

Attribution

Any public display of API data must visibly credit SpaceCraftDB with a followed link. Use:

Data from <a href="https://spacecraftdb.com">SpaceCraftDB</a>

Links may use rel="noopener" when opening a new tab. Do not use nofollow, ugc, sponsored, or noreferrer.

Envelope

{
  "data": {},
  "meta": {
    "apiVersion": "1",
    "dataVersion": "38e663e79c4b97ed",
    "generatedAt": "2026-06-15T00:00:00Z",
    "attribution": {
      "required": true,
      "label": "Data from SpaceCraftDB",
      "url": "https://spacecraftdb.com"
    }
  },
  "links": {
    "self": "/api/v1/version.json"
  }
}

Most endpoints use the standard envelope. Trade Nexus market endpoints return raw Trade Nexus payloads so the website and overlay can share the same read contract.

Cache Policy

Immutable snapshotspublic, max-age=31536000, s-maxage=31536000, immutable
Latest aliasespublic, max-age=300, s-maxage=3600, stale-while-revalidate=86400
Galaxy D1 routespublic, max-age=3600, s-maxage=86400, stale-while-revalidate=604800
Trade Nexus routespublic, max-age=60, s-maxage=300

Trade Nexus Data Rules

Trade Nexus routes expose community-captured sell asks only. Observed buckets are returned as captured with no zero-fill or interpolation; lastSeen is not a sale, totalUnits is listed supply, and these APIs do not infer fills, demand, turnover, or VWAP. Freshness comes from payload capturedAt, not response age.

Endpoint Reference

Select an endpoint family to inspect paths, parameters, cache policy, and the response shape.

GETVersion/api/v1/version.json
/api/v1/version.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "data": {
    "apiVersion": "1",
    "dataVersion": "38e663e79c4b97ed",
    "generatedAt": "2026-06-15T00:00:00Z",
    "attribution": { "...": "..." },
    "counts": { "items": 0, "resources": 0, "missions": 0 },
    "routes": { "...": "..." }
  },
  "meta": { "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/version.json" }
}
GETManifest/api/v1/latest/manifest.json
/api/v1/latest/manifest.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "data": {
    "apiVersion": "1",
    "dataVersion": "38e663e79c4b97ed",
    "generatedAt": "2026-06-15T00:00:00Z",
    "counts": { "items": 0, "resources": 0, "permits": 0 },
    "payloads": {
      "items": {
        "path": "/api/v1/data/38e663e79c4b97ed/items.json",
        "latest": "/api/v1/latest/items.json",
        "sha256": "..."
      }
    },
    "attribution": { "...": "..." }
  },
  "meta": { "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/latest/manifest.json" }
}
GETStats/api/v1/stats.json
/api/v1/stats.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "data": {
    "items": 0,
    "resources": 0,
    "permits": 0,
    "missions": 0
  },
  "meta": { "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/stats.json" }
}
GETOpenAPI/api/v1/openapi.json
/api/v1/openapi.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "openapi": "3.1.0",
  "info": { "title": "SpaceCraftDB API", "version": "1" },
  "paths": { "/api/v1/version.json": { "get": { "...": "..." } } }
}
GETSlim Indexes/api/v1/latest/items/index.json
/api/v1/latest/items/index.json/api/v1/latest/resources/index.json/api/v1/latest/missions/index.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "data": [
    {
      "id": "item-id",
      "slug": "aluminum-ingot",
      "name": "Aluminum Ingot",
      "href": "https://spacecraftdb.com/items/aluminum-ingot",
      "icon": { "file": "atlas.png", "x": 0, "y": 0, "size": 64 },
      "category": "Material",
      "price": 0,
      "storage": 1,
      "hasModel": false
    }
  ],
  "meta": { "count": 0, "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/latest/items/index.json" }
}
GETLatest Snapshots/api/v1/latest/items.json
/api/v1/latest/items.json/api/v1/latest/resources.json/api/v1/latest/permits.json/api/v1/latest/missions.json/api/v1/latest/tech.json/api/v1/latest/crafting/graph.json/api/v1/latest/galaxy/quadrants.json
Params
None
Cache-Control
public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Response Shape

{
  "data": [
    {
      "id": "item-id",
      "slug": "aluminum-ingot",
      "name": "Aluminum Ingot",
      "desc": "...",
      "attributes": [],
      "sources": {
        "craftedBy": [],
        "usedIn": [],
        "minedFrom": [],
        "unlockedBy": []
      }
    }
  ],
  "meta": {
    "payload": { "key": "items", "sourceSha256": "...", "sourceBytes": 0 },
    "...": "standard envelope metadata"
  },
  "links": {
    "self": "/api/v1/latest/items.json",
    "immutable": "/api/v1/data/38e663e79c4b97ed/items.json"
  }
}
GETImmutable Snapshots/api/v1/data/{version}/items.json
/api/v1/data/{version}/items.json/api/v1/data/{version}/resources.json/api/v1/data/{version}/permits.json/api/v1/data/{version}/missions.json/api/v1/data/{version}/tech.json/api/v1/data/{version}/crafting/graph.json/api/v1/data/{version}/galaxy/quadrants.json
Params
version must match the current data version: 38e663e79c4b97ed
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": [ "...same payload shape as the matching latest snapshot..." ],
  "meta": {
    "dataVersion": "38e663e79c4b97ed",
    "payload": { "key": "items", "sourceSha256": "...", "sourceBytes": 0 }
  },
  "links": {
    "self": "/api/v1/data/38e663e79c4b97ed/items.json",
    "latest": "/api/v1/latest/items.json"
  }
}
GETItem Detail/api/v1/items/{slug}.json
/api/v1/items/{slug}.json
Params
slug: lowercase item slug from the items index
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": {
    "id": "item-id",
    "slug": "aluminum-ingot",
    "name": "Aluminum Ingot",
    "href": "https://spacecraftdb.com/items/aluminum-ingot",
    "desc": "...",
    "badges": [],
    "attributes": [],
    "effects": [],
    "skills": [],
    "tags": [],
    "tiers": [],
    "sources": {
      "craftedBy": [],
      "usedIn": [],
      "minedFrom": [],
      "unlockedBy": []
    }
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/items/aluminum-ingot.json",
    "html": "https://spacecraftdb.com/items/aluminum-ingot"
  }
}
GETResource Detail/api/v1/resources/{slug}.json
/api/v1/resources/{slug}.json
Params
slug: lowercase resource slug from the resources index
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": {
    "id": "resource-id",
    "slug": "alu-deposit",
    "name": "Alu Deposit",
    "href": "https://spacecraftdb.com/resources/alu-deposit",
    "icon": { "file": "atlas.png", "x": 0, "y": 0, "size": 64 },
    "tier": 0,
    "type": "deposit",
    "desc": "...",
    "drops": []
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/resources/alu-deposit.json",
    "html": "https://spacecraftdb.com/resources/alu-deposit"
  }
}
GETPermit Detail/api/v1/permits/{slug}.json
/api/v1/permits/{slug}.json
Params
slug: lowercase permit slug
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": {
    "id": "permit-id",
    "slug": "electromagnetism",
    "name": "Electromagnetism",
    "href": "https://spacecraftdb.com/permits/electromagnetism",
    "cost": 0,
    "currency": "research",
    "requires": [],
    "unlocks": [],
    "attributeUnlocks": []
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/permits/electromagnetism.json",
    "html": "https://spacecraftdb.com/permits/electromagnetism"
  }
}
GETMission Detail/api/v1/missions/{slug}.json
/api/v1/missions/{slug}.json
Params
slug: lowercase mission slug from the missions index
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": {
    "id": "mission-id",
    "slug": "first-steps",
    "title": "First Steps",
    "href": "https://spacecraftdb.com/missions/first-steps",
    "order": 0,
    "kind": "...",
    "category": "...",
    "goal": "...",
    "requires": [],
    "rewards": [],
    "steps": [{ "text": "..." }],
    "intercom": [{ "text": "..." }]
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/missions/first-steps.json",
    "html": "https://spacecraftdb.com/missions/first-steps"
  }
}
GETTech/api/v1/tech.json
/api/v1/tech.json/api/v1/tech/nodes/{idOrSlug}.json
Params
idOrSlug: tech node id or slug for node detail routes
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable

Response Shape

{
  "data": {
    "id": "tech-node-id",
    "slug": "electromagnetism",
    "name": "Electromagnetism",
    "section": "perks",
    "track": "optional-track-slug",
    "requires": [],
    "unlocks": []
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/tech/nodes/electromagnetism.json",
    "html": "https://spacecraftdb.com/tech-tree#electromagnetism"
  }
}
GETGalaxy Map/api/v1/latest/galaxy/{quadrant}/map.json
/api/v1/latest/galaxy/{quadrant}/map.json
Params
quadrant: lowercase quadrant slug
Cache-Control
public, max-age=3600, s-maxage=86400, stale-while-revalidate=604800

Response Shape

{
  "data": {
    "w": 0,
    "h": 0,
    "sys": [
      { "id": "system-id", "slug": "system-slug", "n": "System Name", "x": 0, "y": 0, "pos": { "x": 0, "y": 0, "z": 0 } }
    ],
    "edges": [[0, 1]],
    "sectors": [
      { "id": "sector-id", "name": "Sector Name", "hull": [[0, 0]], "cx": 0, "cy": 0, "explorationLevel": 2 }
    ]
  },
  "meta": { "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/latest/galaxy/vexasux/map.json" }
}
GETGalaxy Facets/api/v1/latest/galaxy/{quadrant}/facets.json
/api/v1/latest/galaxy/{quadrant}/facets.json
Params
quadrant: lowercase quadrant slug
Cache-Control
public, max-age=3600, s-maxage=86400, stale-while-revalidate=604800

Response Shape

{
  "data": {
    "resources": [{ "slug": "alu-deposit", "name": "Alu Deposit", "tier": 0 }],
    "services": [{ "id": "market", "name": "Market", "kind": "service" }],
    "systems": {
      "system-id": { "r": [0], "s": [0], "names": ["System Name"] }
    }
  },
  "meta": { "...": "standard envelope metadata" },
  "links": { "self": "/api/v1/latest/galaxy/vexasux/facets.json" }
}
GETGalaxy System/api/v1/latest/galaxy/{quadrant}/systems/{system}.json
/api/v1/latest/galaxy/{quadrant}/systems/{system}.json
Params
quadrant: lowercase quadrant slug; system: lowercase system slug
Cache-Control
public, max-age=3600, s-maxage=86400, stale-while-revalidate=604800

Response Shape

{
  "data": {
    "id": "system-id",
    "slug": "example-system",
    "name": "Example System",
    "star": "...",
    "sectorId": "sector-id",
    "sectorName": "Sector Name",
    "explorationLevel": 2,
    "planets": [
      { "idx": 0, "name": "Planet Name", "resources": [] }
    ],
    "connections": [
      { "id": "neighbor-id", "slug": "neighbor-system", "name": "Neighbor System" }
    ],
    "stations": []
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/latest/galaxy/vexasux/systems/example-system.json",
    "html": "https://spacecraftdb.com/galaxy/vexasux/example-system"
  }
}
GETGalaxy Planet/api/v1/latest/galaxy/{quadrant}/systems/{system}/planets/{idx}.json
/api/v1/latest/galaxy/{quadrant}/systems/{system}/planets/{idx}.json
Params
quadrant: lowercase quadrant slug; system: lowercase system slug; idx: zero-based planet index
Cache-Control
public, max-age=3600, s-maxage=86400, stale-while-revalidate=604800

Response Shape

{
  "data": {
    "idx": 0,
    "name": "Planet Name",
    "lx": 0,
    "ly": 0,
    "resources": [
      { "id": "resource-id", "slug": "alu-deposit", "name": "Alu Deposit", "tier": 0 }
    ]
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/latest/galaxy/vexasux/systems/example-system/planets/0.json",
    "html": "https://spacecraftdb.com/galaxy/vexasux/example-system/0"
  }
}
GETTrade Nexus Station Book/api/v1/markets/{quadrant}/stations/{station}/book.json
/api/v1/markets/{quadrant}/stations/{station}/book.json
Params
quadrant: server slug such as na-indanex; station: helicon, ur, or a raw Sys_* station id
Cache-Control
public, max-age=60, s-maxage=300

Response Shape

{
  "server": {
    "slug": "na-indanex",
    "regionCode": "na",
    "region": "North America",
    "realmId": "indanex",
    "name": "Indanex"
  },
  "station": {
    "systemId": "Sys_TerminusStation",
    "systemName": "Helicon",
    "system": "Sawma",
    "slug": "helicon"
  },
  "capturedAt": 1760000000000,
  "items": [
    {
      "itemGuid": "0123456789abcdef",
      "bestAskCents": 12500,
      "emaPriceCents": 12800,
      "avgAskCents": 13100,
      "totalUnits": 240,
      "orderCount": 3,
      "sellerCount": 2,
      "capturedAt": 1760000000000,
      "hourBucket": 488888,
      "prevBestAskCents": 12900,
      "spark": [13200, 12900, 12500],
      "sparkBuckets": [488886, 488887, 488888],
      "newestOfferAgeMs": 120000
    }
  ]
}
GETTrade Nexus Item Detail/api/v1/markets/{quadrant}/items/{guid64}.json?station={station}
/api/v1/markets/{quadrant}/items/{guid64}.json?station={station}
Params
quadrant: server slug; guid64: item guid64 hex; station: optional station slug or raw Sys_* station id
Cache-Control
public, max-age=60, s-maxage=300

Response Shape

{
  "itemGuid": "0123456789abcdef",
  "server": { "slug": "na-indanex", "realmId": "indanex", "name": "Indanex" },
  "station": { "systemId": "Sys_TerminusStation", "systemName": "Helicon", "slug": "helicon" },
  "series": [
    {
      "hourBucket": 488888,
      "capturedAt": 1760000000000,
      "bestAskCents": 12500,
      "emaPriceCents": 12800,
      "avgAskCents": 13100,
      "totalUnits": 240,
      "orderCount": 3,
      "sellerCount": 2
    }
  ],
  "expiryHorizonGameT": 123456,
  "offers": [
    {
      "uid": 123,
      "qty": 80,
      "priceCents": 12500,
      "expiryGameT": 123456,
      "expiryWallMs": 1760003600000,
      "playerUid": "player-id",
      "playerName": "Seller",
      "corpName": "Corp",
      "firstSeenBucket": 488887,
      "lastSeenBucket": 488888,
      "firstSeenAt": 1759996400000,
      "lastSeenAt": 1760000000000
    }
  ],
  "stations": [{ "systemId": "Sys_TerminusStation", "systemName": "Helicon", "bestAskCents": 12500, "capturedAt": 1760000000000 }],
  "servers": [{ "slug": "eu-example", "realmId": "example", "bestAskCents": 14000, "capturedAt": 1760000000000 }]
}
GETTooltip Data/api/v1/items/{slug}/tooltip.json
/api/v1/items/{slug}/tooltip.json/api/v1/items/tooltips.json?slugs=slug-a,slug-b
Params
slug: lowercase item slug; slugs: comma-separated item slugs, maximum 40
Cache-Control
public, max-age=31536000, s-maxage=31536000, immutable for single item tooltip; public, max-age=300, s-maxage=3600, stale-while-revalidate=86400 for batch tooltip requests

Response Shape

{
  "data": {
    "schema": "scdb.item-tooltip.v1",
    "id": "item-id",
    "slug": "aluminum-ingot",
    "name": "Aluminum Ingot",
    "url": "https://spacecraftdb.com/items/aluminum-ingot",
    "description": "...",
    "icon": { "file": "atlas.png", "x": 0, "y": 0, "size": 64 },
    "price": 0,
    "storage": 1,
    "lootTier": 0,
    "attributes": [],
    "craftedFrom": [],
    "counts": { "craftedBy": 0, "usedIn": 0, "minedFrom": 0, "unlockedBy": 0 }
  },
  "meta": { "...": "standard envelope metadata" },
  "links": {
    "self": "/api/v1/items/aluminum-ingot/tooltip.json",
    "html": "https://spacecraftdb.com/items/aluminum-ingot"
  }
}

Errors

{
  "error": {
    "code": "not_found",
    "message": "Item not found",
    "details": { "slug": "missing-item" }
  },
  "meta": { "...": "..." },
  "links": { "self": "/api/v1/items/missing-item.json" }
}