JSON API Reference
Overview
All game data on salvageunion.io is available as machine-readable JSON. The API is static — every endpoint is a plain file served directly from the site. No authentication is required.
CORS is fully open (Access-Control-Allow-Origin: *), so you can fetch from any origin, including browser JavaScript.
Base URL: https://salvageunion.io
Tip: appending .json to any schema URL on this site returns the underlying data. For example, /schema/chassis renders the HTML index, and /schema/chassis.json serves the raw array. The same applies to individual entities: /schema/chassis/item/iron-mongrel.json.
Endpoints
GET
/schema/{schemaId}.json
Returns the full data array for a schema. Each element is a game entity.
Example: https://salvageunion.io/schema/chassis.json
[
{
"id": "iron-mongrel",
"name": "Iron Mongrel",
"hull": 30,
"armor": 2,
...
},
...
]GET
/schema/{schemaId}.schema.json
Returns the JSON Schema definition for a schema, generated from the Zod validation schemas used in the SRD codebase. Useful for validating data or understanding the shape of entity objects.
Example: https://salvageunion.io/schema/chassis.schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string" },
"name": { "type": "string" },
...
}
}
}GET
/schema/{schemaId}/item/{itemId}.json
Returns a single entity by its slug. Entity slugs are lowercase, hyphen-separated versions of the entity name (e.g., Iron Mongrel becomes iron-mongrel). Slugs match the URLs used on the reference site.
Example: https://salvageunion.io/schema/chassis/item/iron-mongrel.json
{
"id": "iron-mongrel",
"name": "Iron Mongrel",
"hull": 30,
"armor": 2,
...
}Usage Example
Fetch all chassis data in browser JavaScript:
const response = await fetch('https://salvageunion.io/schema/chassis.json')
const chassis = await response.json()
console.log(chassis[0].name) // "Iron Mongrel"Available Schemas
The following schema IDs are available. Use them in the endpoint patterns above.
| Schema ID | Name | Items |
|---|---|---|
| abilities | Abilities | 103 |
| bio-titans | Bio-Titans | 12 |
| chassis | Chassis | 51 |
| classes | Classes | 11 |
| crawler-bays | Crawler Bays | 10 |
| crawler-tech-levels | Crawler Tech Levels | 6 |
| crawlers | Crawlers | 5 |
| creatures | Creatures | 13 |
| distances | Distances | 4 |
| drones | Drones | 14 |
| equipment | Equipment | 82 |
| factions | Factions | 10 |
| guides | Guides | 15 |
| keywords | Keywords | 82 |
| meld | Meld | 5 |
| modules | Modules | 83 |
| npcs | NPCs | 19 |
| roll-tables | Roll Tables | 96 |
| sources | Sources | 10 |
| squads | Squads | 23 |
| systems | Systems | 128 |
| tech-levels | Tech Levels | 6 |
| traits | Traits | 45 |
| vehicles | Vehicles | 11 |
CORS Policy
All /schema/ endpoints include the following response headers:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Content-Type: application/jsonNo preflight requests are required for standard GET requests.
Licensing
Data returned by this API is published under the Salvage Union Open Game Licence (OGL 1.0b). Salvage Union is created and published by Leyline Press.
The licence covers game text and mechanics only. Entity artwork is not covered — those images are used on this site with special permission from Leyline Press and may not be redistributed. Republication of licensed text must include the legal notices required by the Salvage Union Open Game Licence 1.0b.