JADE REALMS / Developer documentation
REST API reference
No account or API key is required for public metadata or free individual model files. Paid pack metadata is public; paid file downloads retain the website purchase checks.
Quick start
Search → inspect → download
curl --fail 'https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en") as response:
body = json.load(response)
print(body['data'])The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
Authentication and access
No account or API key is required for public metadata or free individual model files. Paid pack metadata is public; paid file downloads retain the website purchase checks.
- Base URL
https://3dmodelhub.io/api/v1- API version
- 1.0.0
- Supported languages
- en · zh · ja · ko · es · de · fr
Only GET and HEAD return data; OPTIONS handles CORS preflight. Browser requests use credentials: omit. Parameters are case-sensitive; unknown, repeated or out-of-range values return 400.
Metadata shares a best-effort edge limit of 120 requests per minute per IP at each Cloudflare location. File downloads have no account download quota.
Only anonymous, published catalog facts are returned. Unknown facts remain null; recorded import checks apply to the exact GLB hash and do not certify performance.
GET/api/v1/site
Site information
Read published categories, styles, languages and counts. Catalog entries are not necessarily independent models; read the scope notes.
jaderealms_get_site_info
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/site?locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/site?locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/site?locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": {
"name": "JadeRealms",
"origin": "https://3dmodelhub.io",
"languages": [
{
"code": "en",
"tag": "en",
"label": "English"
},
{
"code": "zh",
"tag": "zh-CN",
"label": "中文"
},
{
"code": "ja",
"tag": "ja",
"label": "日本語"
},
{
"code": "ko",
"tag": "ko",
"label": "한국어"
},
{
"code": "es",
"tag": "es",
"label": "Español"
},
{
"code": "de",
"tag": "de",
"label": "Deutsch"
},
{
"code": "fr",
"tag": "fr",
"label": "Français"
}
],
"catalog": {
"verified_entries": 252,
"scope_verified_entries": 252,
"scope_pending_entries": 0,
"historical_entries": 251,
"separate_modules": 1,
"verified_atomic_model_total": null,
"verified_scene_packs": 4,
"count_note": "Catalog entries may be scenes, kits or entries of unverified scope. A parent scene and an extracted module are not counted as independent designs twice."
},
"categories": [
{
"id": "terrain",
"name": "Rocks & terrain",
"count": 29
},
{
"id": "vegetation",
"name": "Trees & plants",
"count": 18
},
{
"id": "architecture",
"name": "Buildings & architecture",
"count": 71
},
{
"id": "creatures",
"name": "Creatures & animals",
"count": 30
},
{
"id": "props",
"name": "Props & objects",
"count": 96
},
{
"id": "environment",
"name": "Environment pieces",
"count": 8
}
],
"styles": [
{
"id": "ancient",
"name": "Ancient",
"count": 72
},
{
"id": "fantasy",
"name": "Fantasy",
"count": 64
},
{
"id": "scifi",
"name": "Sci-fi",
"count": 22
},
{
"id": "modern",
"name": "Modern",
"count": 23
},
{
"id": "toon",
"name": "Cartoon",
"count": 78
},
{
"id": "anime",
"name": "Anime & JRPG",
"count": 43
}
],
"access": {
"free_model_login_required": false,
"paid_pack_login_required": true,
"paid_pack_purchase_required": true,
"private_account_data_exposed": false
},
"links": {
"home": "https://3dmodelhub.io/",
"models": "https://3dmodelhub.io/models/",
"kits": "https://3dmodelhub.io/kits/",
"guide": "https://3dmodelhub.io/guide/",
"license": "https://3dmodelhub.io/license/"
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "e73e5037-1feb-4495-97c4-3d9a54f70a3f"
}
}GET/api/v1/models
Search models
Filter by keyword and structured conditions. Default order is featured first, then ID; use offset for pagination. Read /site for category and style values.
jaderealms_search_models
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
qquery · string | Optional | "" | ≤ 120 | Literal keyword matched against indexed names and descriptions. |
categoryquery · string | Optional | — | terrain · vegetation · architecture · creatures · props · environment | Model category. |
stylequery · string | Optional | — | ancient · fantasy · scifi · modern · toon · anime | Visual style. |
tested_enginequery · string | Optional | — | godot · unity · unreal | Recorded, hash-matched engine import check. |
max_trianglesquery · integer | Optional | — | 1–100000000 | Maximum triangle count. |
limitquery · integer | Optional | 8 | 1–20 | Rows per page. |
offsetquery · integer | Optional | 0 | 0–10000 | Starting row for pagination. |
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": [
{
"id": "ancient_pine",
"name": "Ancient Pine",
"name_en": "Ancient Pine",
"category": "vegetation",
"category_name": "Trees & plants",
"styles": [
"ancient",
"fantasy"
],
"triangles": 135682,
"default_glb_bytes": 19271052,
"static": true,
"scope": {
"type": "independent_functional_object",
"status": "verified",
"checked_on": "2026-10-22",
"evidence": "verified_actual_glb_and_three_view_classification",
"parent_id": null,
"historical_count_increment": 1
},
"tested_engines": [
"godot",
"unity"
],
"detail_url": "https://3dmodelhub.io/models/ancient_pine/",
"poster_url": "https://3dmodelhub.io/media/ancient_pine-1280.jpg"
}
],
"pagination": {
"total": 1,
"limit": 2,
"offset": 0,
"next_offset": null
},
"sort": "featured_then_id",
"meta": {
"api_version": "1.0.0",
"request_id": "617adbab-ced7-4841-aa29-5200d328cd50"
}
}GET/api/v1/models/{id}
Model details
Use an exact ID from search to get files, materials, animations, dimensions and hash-matched engine checks.
jaderealms_get_model_details
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
idpath · string | Required | — | ^[A-Za-z0-9_-]+$ · 1–100 | Exact ID returned by a model or pack list. |
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/models/ancient_pine?locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/models/ancient_pine?locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/models/ancient_pine?locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": {
"id": "ancient_pine",
"name": "Ancient Pine",
"name_en": "Ancient Pine",
"category": "vegetation",
"category_name": "Trees & plants",
"styles": [
"ancient",
"fantasy"
],
"triangles": 135682,
"default_glb_bytes": 19271052,
"static": true,
"scope": {
"type": "independent_functional_object",
"status": "verified",
"checked_on": "2026-10-22",
"evidence": "verified_actual_glb_and_three_view_classification",
"parent_id": null,
"historical_count_increment": 1
},
"tested_engines": [
"godot",
"unity"
],
"detail_url": "https://3dmodelhub.io/models/ancient_pine/",
"poster_url": "https://3dmodelhub.io/media/ancient_pine-1280.jpg",
"version": "Ancient_Pine_Runtime_v1",
"materials": 5,
"textures": 8,
"available_formats": [
"GLB",
"Blender"
],
"rigged": false,
"animation_count": 0,
"dimensions_m_y_up": null,
"download": {
"login_required": false,
"purchase_required": false,
"recommended": "complete_model_zip",
"files": [
{
"format": "GLB",
"purpose": "Direct default model with embedded materials",
"filename": "ancient_pine_LOD1.glb",
"bytes": 19271052,
"sha256": "2301433ad1795a0bff44b55d65f6ad81e2f94c5e3f15fa0eb7dcdc38a8bb6bbb",
"url": "https://3dmodelhub.io/download/ancient_pine/model-0/"
},
{
"format": "ZIP",
"purpose": "Complete files for this model, including Blender sources and textures",
"filename": "ancient_pine_complete.zip",
"bytes": 41762903,
"sha256": "1529b0170d56bab328c6bf7688009b0359fd390b5491b2a4689b7c9c9125a631",
"url": "https://3dmodelhub.io/download/ancient_pine/package/"
}
]
},
"validation": {
"source_glb_sha256": "2301433ad1795a0bff44b55d65f6ad81e2f94c5e3f15fa0eb7dcdc38a8bb6bbb",
"checks": [
{
"engine": "godot",
"version": "4.7.2",
"status": "passed",
"adaptations": [],
"verified_on": "2026-10-19",
"scope": "desktop_import_materials_static_render",
"report_sha256": "56ab80f9590d2708d689fe6fa1f446c19f3a39e9b71b3013ea3737f35c6ade2a"
},
{
"importer": "com.unity.cloud.gltfast 6.14.1",
"engine": "unity",
"version": "6000.6.6f1",
"status": "passed",
"adaptations": [],
"verified_on": "2026-10-19",
"scope": "desktop_import_materials_static_render",
"report_sha256": "a3034b63e1d70b6970ef6aca228012fc8b76765f2cdaa7c828735f1f46d9c3f4"
}
],
"limitations": "Checks apply to the current default GLB. Desktop checks only. Performance, rigging, animation, model collisions and automatic LOD are not certified.",
"unreal": "Unreal Engine: not tested"
},
"license": {
"url": "https://3dmodelhub.io/license/",
"commercial_games_and_animation": true,
"cc0_foundation_exception": false
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "19b33b88-5b93-4665-b424-acf780571987"
}
}GET/api/v1/kits
Scene packs
Read public scene packs, current public prices and delivery summaries. Personal ownership is not queried.
jaderealms_list_scene_kits
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/kits?locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/kits?locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/kits?locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": [
{
"id": "meteor-ancient-town",
"name": "Meteor Ancient Town · Riverside Tea Street",
"summary": "Explore original models along a canal, stone bridge and tea-house street. Switch cameras and lighting in the interactive scene.",
"version": "v02",
"access": "paid_one_time",
"login_required": true,
"ownership": "not_queried",
"availability": "on_sale",
"price": {
"amount_minor": 799,
"currency": "usd",
"phase": "intro",
"policy": "intro_then_standard",
"intro_amount_minor": 799,
"standard_amount_minor": 999,
"launch_at": "2026-10-21T16:03:49.190Z",
"intro_ends_at": "2026-11-20T16:03:49.190Z",
"checkout_enabled": true,
"mode": "live"
},
"contents": {
"source_catalog": "models",
"model_count": 9,
"instance_count": 41,
"counts_note": "Instances, LOD files and collision proxies are not additional independent models.",
"source_model_ids": [
"tea_house",
"moon_gate",
"arched_stone_bridge",
"crimson_maple",
"weeping_willow",
"stone_lantern",
"courtyard_wall_corner",
"open_tea_pavilion",
"bamboo_stand"
],
"source_model_access": "free_catalog"
},
"delivery": {
"filename": "Meteor_Ancient_Town_Complete_v02.zip",
"bytes": 876519048,
"format": "ZIP",
"download_ready": true,
"access_note": "Sign in, purchase this pack, and use the download button on its original page. This response does not grant access."
},
"validation": {
"details_url": "https://3dmodelhub.io/kits/meteor-ancient-town/",
"checks": [],
"limitations": [
"Engine checks differ between scene packs. Consult this pack detail page; checks on individual source models do not certify whole-scene performance."
]
},
"detail_url": "https://3dmodelhub.io/kits/meteor-ancient-town/",
"preview_url": "https://3dmodelhub.io/preview/meteor-ancient-town/?lang=en",
"license_url": "https://3dmodelhub.io/license/"
},
{
"id": "moonlit-bamboo",
"name": "Moon Gate & Bamboo",
"summary": "A quiet courtyard of bamboo, stone lanterns and a moon gate. Explore the original models, change the light and move closer to the details.",
"version": "v02",
"access": "paid_one_time",
"login_required": true,
"ownership": "not_queried",
"availability": "on_sale",
"price": {
"amount_minor": 399,
"currency": "usd",
"phase": "intro",
"policy": "intro_then_standard",
"intro_amount_minor": 399,
"standard_amount_minor": 599,
"launch_at": "2026-10-21T16:03:49.190Z",
"intro_ends_at": "2026-11-20T16:03:49.190Z",
"checkout_enabled": true,
"mode": "live"
},
"contents": {
"source_catalog": "models",
"model_count": 4,
"instance_count": 7,
"counts_note": "Instances, LOD files and collision proxies are not additional independent models.",
"source_model_ids": [
"moon_gate",
"stone_lantern",
"bamboo_stand",
"moss_boulders"
],
"source_model_access": "free_catalog"
},
"delivery": {
"filename": "Moonlit_Bamboo_Complete_v02.zip",
"bytes": 234657922,
"format": "ZIP",
"download_ready": true,
"access_note": "Sign in, purchase this pack, and use the download button on its original page. This response does not grant access."
},
"validation": {
"details_url": "https://3dmodelhub.io/scenes/moonlit-bamboo/",
"checks": [],
"limitations": [
"Engine checks differ between scene packs. Consult this pack detail page; checks on individual source models do not certify whole-scene performance."
]
},
"detail_url": "https://3dmodelhub.io/scenes/moonlit-bamboo/",
"preview_url": "https://3dmodelhub.io/scenes/moonlit-bamboo/#preview",
"license_url": "https://3dmodelhub.io/license/"
},
{
"id": "sunward-modern-town",
"name": "Sunward Modern Town",
"summary": "A bright, walkable-looking town layout for building your next game environment. Shops, homes and public spaces share a restrained cream and teal palette.",
"version": "v02",
"access": "paid_one_time",
"login_required": true,
"ownership": "not_queried",
"availability": "on_sale",
"price": {
"amount_minor": 799,
"currency": "usd",
"phase": "fixed",
"policy": "fixed",
"intro_amount_minor": 799,
"standard_amount_minor": 799,
"launch_at": "2026-10-21T16:03:49.190Z",
"intro_ends_at": null,
"checkout_enabled": true,
"mode": "live"
},
"contents": {
"source_catalog": "sunward",
"model_count": 72,
"instance_count": 128,
"counts_note": "Instances, LOD files and collision proxies are not additional independent models.",
"source_model_ids": [
"balcony_platform",
"balcony_railing",
"column",
"corner_external",
"corner_internal",
"cornice",
"exterior_stair",
"foundation_step",
"parapet_corner",
"parapet_straight",
"porch_canopy",
"roof_flat",
"roof_hvac",
"roof_pitched_end",
"roof_pitched_middle",
"shop_awning",
"solar_rack",
"wall_entry",
"wall_shop_entry",
"wall_shop_window",
"wall_solid",
"wall_window",
"crosswalk_marking",
"curb_ramp",
"drain_channel",
"parking_marking",
"plaza_paving",
"road_cross_junction",
"road_curve",
"road_straight",
"road_t_junction",
"sidewalk_external_corner",
"sidewalk_internal_corner",
"sidewalk_straight",
"bollard",
"direction_sign",
"fire_hydrant",
"fountain",
"menu_board",
"planter",
"shop_hanging_sign",
"traffic_light",
"tree_broadleaf",
"tree_street_tall",
"tree_pine_layered",
"tree_blossom",
"shrub_leafy",
"fern_arching",
"grass_upright",
"grass_arching",
"rock_single",
"flowers_meadow",
"bus_shelter",
"bus_stop_sign",
"trash_bin",
"recycling_bin",
"post_box",
"parcel_locker",
"bicycle_rack",
"bicycle",
"bench",
"street_lamp",
"notice_board",
"drinking_fountain",
"car_compact",
"delivery_van",
"vending_machine",
"cafe_table",
"cafe_chair",
"patio_umbrella",
"shop_crate",
"ev_charger"
],
"source_model_access": "paid_pack_only"
},
"delivery": {
"filename": "Sunward_Modern_Town_Complete_v02.zip",
"bytes": 685144857,
"format": "ZIP",
"download_ready": true,
"access_note": "Sign in, purchase this pack, and use the download button on its original page. This response does not grant access."
},
"validation": {
"details_url": "https://3dmodelhub.io/products/sunward-modern-town/",
"checks": [
"Blender 4.3.2 round-trip import: all 175 standalone-library GLBs and 54 town GLBs passed.",
"Godot 4.6.3 headless import: 175 library resources; 282 collision shapes and 846 outside samples passed. Disabling lossy mesh compression preserved 395,326 base triangles without degenerates.",
"Town Godot 4.6.3 headless import: 54 GLBs and 30 images; 17 default files and 17 collision files checked together. Checks passed for 410 collision components, 1,230 outside samples, 560 character-scale samples and 8 explicit routes."
],
"limitations": [
"Building exteriors only. No interiors, characters, missions, driving or shop interactions.",
"No automatic LOD switching, streaming, full-map navigation or complete character controller.",
"Town collision covers building shells and world ground support, not every street prop, tree trunk or small obstacle. Eight tested routes do not certify every part of the town as traversable.",
"Godot does not apply KHR_materials_ior. Glass appearance is not identical across engines.",
"No GPU frame-rate testing, Unity/Unreal validation or mobile certification has been completed.",
"Repeated building combinations remain visible. LOD0 detail covers 26 representative buildings; the other 102 do not have the same detail level. The default town contains 5,358,342 triangles and still needs target-device optimization. Technical checks are not final commercial visual acceptance. Use the validated runtime/Collision GLBs rather than older authoring helper collisions."
]
},
"detail_url": "https://3dmodelhub.io/products/sunward-modern-town/",
"preview_url": "https://3dmodelhub.io/preview/sunward-modern-town/?lang=en",
"license_url": "https://3dmodelhub.io/license/"
},
{
"id": "creek-village",
"name": "Creek Village V5",
"summary": "A small village among grassy banks, a winding creek and a watermill. Includes the editable V5 Blender scene with the grass-shadow fix.",
"version": "v05",
"access": "paid_one_time",
"login_required": true,
"ownership": "not_queried",
"availability": "on_sale",
"price": {
"amount_minor": 599,
"currency": "usd",
"phase": "fixed",
"policy": "fixed",
"intro_amount_minor": 599,
"standard_amount_minor": 599,
"launch_at": "2026-10-22T01:05:44.321Z",
"intro_ends_at": null,
"checkout_enabled": true,
"mode": "live"
},
"contents": {
"source_catalog": "blender-scene",
"model_count": null,
"instance_count": null,
"counts_note": "Instances, LOD files and collision proxies are not additional independent models.",
"source_model_ids": [],
"source_model_access": "paid_pack_only"
},
"delivery": {
"filename": "Creek_Village_V5_Complete_v05.zip",
"bytes": 28490117,
"format": "ZIP",
"download_ready": true,
"access_note": "Sign in, purchase this pack, and use the download button on its original page. This response does not grant access."
},
"validation": {
"details_url": "https://3dmodelhub.io/kits/creek-village/",
"checks": [
"The grass-shadow fix was checked during local Blender material-preview playback. The recorded comparison preserves geometry, object transforms, material nodes and animation."
],
"limitations": [
"This is one composed environment. Scene objects and grass instances are not a count of independent models.",
"The browser shows a static GLB adaptation. Procedural Blender materials, lighting and source animation may differ.",
"No Godot, Unity or Unreal import, collision, navigation or target-device FPS validation has been completed.",
"The source playback check is not a final Cycles animation-render acceptance or proof that every frame is artifact-free."
]
},
"detail_url": "https://3dmodelhub.io/kits/creek-village/",
"preview_url": "https://3dmodelhub.io/preview/creek-village/?lang=en",
"license_url": "https://3dmodelhub.io/license/"
}
],
"meta": {
"api_version": "1.0.0",
"request_id": "e8114692-8c4c-4a53-9fa2-d7be26566fe1"
}
}GET/api/v1/kits/{id}
Scene pack details
Read one pack’s public contents, validation and delivery metadata. A filename and size grant no paid-file access.
jaderealms_get_scene_kit_details
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
idpath · string | Required | — | ^[A-Za-z0-9_-]+$ · 1–100 | Exact ID returned by a model or pack list. |
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/kits/creek-village?locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/kits/creek-village?locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/kits/creek-village?locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": {
"id": "creek-village",
"name": "Creek Village V5",
"summary": "A small village among grassy banks, a winding creek and a watermill. Includes the editable V5 Blender scene with the grass-shadow fix.",
"version": "v05",
"access": "paid_one_time",
"login_required": true,
"ownership": "not_queried",
"availability": "on_sale",
"price": {
"amount_minor": 599,
"currency": "usd",
"phase": "fixed",
"policy": "fixed",
"intro_amount_minor": 599,
"standard_amount_minor": 599,
"launch_at": "2026-10-22T01:05:44.321Z",
"intro_ends_at": null,
"checkout_enabled": true,
"mode": "live"
},
"contents": {
"source_catalog": "blender-scene",
"model_count": null,
"instance_count": null,
"counts_note": "Instances, LOD files and collision proxies are not additional independent models.",
"source_model_ids": [],
"source_model_access": "paid_pack_only"
},
"delivery": {
"filename": "Creek_Village_V5_Complete_v05.zip",
"bytes": 28490117,
"format": "ZIP",
"download_ready": true,
"access_note": "Sign in, purchase this pack, and use the download button on its original page. This response does not grant access."
},
"validation": {
"details_url": "https://3dmodelhub.io/kits/creek-village/",
"checks": [
"The grass-shadow fix was checked during local Blender material-preview playback. The recorded comparison preserves geometry, object transforms, material nodes and animation."
],
"limitations": [
"This is one composed environment. Scene objects and grass instances are not a count of independent models.",
"The browser shows a static GLB adaptation. Procedural Blender materials, lighting and source animation may differ.",
"No Godot, Unity or Unreal import, collision, navigation or target-device FPS validation has been completed.",
"The source playback check is not a final Cycles animation-render acceptance or proof that every frame is artifact-free."
]
},
"detail_url": "https://3dmodelhub.io/kits/creek-village/",
"preview_url": "https://3dmodelhub.io/preview/creek-village/?lang=en",
"license_url": "https://3dmodelhub.io/license/"
},
"meta": {
"api_version": "1.0.0",
"request_id": "95935a7a-510f-43d6-adb0-68d01c6fc512"
}
}GET/api/v1/guidance
Usage and licensing
topic is required: license, downloads, engines or purchases. The linked license page contains the applicable terms.
jaderealms_get_usage_guidance
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
topicquery · string | Required | — | license · downloads · engines · purchases | Published guidance topic. |
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/guidance?topic=license&locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/guidance?topic=license&locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/guidance?topic=license&locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": {
"topic": "license",
"links": {
"home": "https://3dmodelhub.io/",
"models": "https://3dmodelhub.io/models/",
"kits": "https://3dmodelhub.io/kits/",
"guide": "https://3dmodelhub.io/guide/",
"license": "https://3dmodelhub.io/license/"
},
"confirmed": true,
"commercial_games_and_animation": true,
"raw_asset_resale": false,
"repackaged_asset_distribution": false,
"paid_pack_terms_url": "https://3dmodelhub.io/license/",
"cc0_exceptions": {
"note": "Project redistribution restrictions do not override the disclosed CC0 foundation rights. Consult the exact source records.",
"url": "https://3dmodelhub.io/license/#cc0-foundations",
"model_ids": [
"ancient_east_water_buffalo",
"anime_jrpg_coastal_wind_cliff"
]
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "1580c4cd-1cb2-457b-8202-8c2ca4d3a887"
}
}GET/api/v1/models/{id}/downloads
Free download information
Get free GLB and complete ZIP metadata and URLs. This endpoint returns JSON; follow files[].url to receive the actual bytes.
jaderealms_get_model_downloads
| Request parameters | Required | Default | Allowed values | Description |
|---|---|---|---|---|
idpath · string | Required | — | ^[A-Za-z0-9_-]+$ · 1–100 | Exact ID returned by a model or pack list. |
localequery · string | Optional | "en" | en · zh · ja · ko · es · de · fr | Response language. |
curl --fail 'https://3dmodelhub.io/api/v1/models/ancient_pine/downloads?locale=en'const response = await fetch("https://3dmodelhub.io/api/v1/models/ancient_pine/downloads?locale=en", {
credentials: 'omit',
headers: { Accept: 'application/json' }
});
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
console.log(body.data);import json
from urllib.request import urlopen
with urlopen("https://3dmodelhub.io/api/v1/models/ancient_pine/downloads?locale=en") as response:
body = json.load(response)
print(body['data'])Response example · HTTP 200
The examples below are generated from the current published catalog. Counts, prices and request IDs may change between requests.
{
"locale": "en",
"data": {
"id": "ancient_pine",
"version": "Ancient_Pine_Runtime_v1",
"login_required": false,
"purchase_required": false,
"recommended": "complete_model_zip",
"files": [
{
"format": "GLB",
"purpose": "Direct default model with embedded materials",
"filename": "ancient_pine_LOD1.glb",
"bytes": 19271052,
"sha256": "2301433ad1795a0bff44b55d65f6ad81e2f94c5e3f15fa0eb7dcdc38a8bb6bbb",
"url": "https://3dmodelhub.io/download/ancient_pine/model-0/"
},
{
"format": "ZIP",
"purpose": "Complete files for this model, including Blender sources and textures",
"filename": "ancient_pine_complete.zip",
"bytes": 41762903,
"sha256": "1529b0170d56bab328c6bf7688009b0359fd390b5491b2a4689b7c9c9125a631",
"url": "https://3dmodelhub.io/download/ancient_pine/package/"
}
],
"license": {
"url": "https://3dmodelhub.io/license/",
"commercial_games_and_animation": true,
"cc0_foundation_exception": false
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "a7845b89-39fc-4362-961d-e52e60296cd1"
}
}Response fields
| JSON | Description |
|---|---|
data | The endpoint result: arrays for model/pack lists, objects for details. |
id / version | Stable entry ID and content version. Use the ID, not a translated name, in detail paths. |
name / name_en | Localized and English names. JSON names, enum values and IDs are independent of locale. |
category / category_name / styles | Category code, display label and style code array. Filter using codes, not labels. |
triangles / default_glb_bytes | Triangle count and byte size of the default GLB, as integers. Not ZIP size or scene performance. |
materials / textures | Recorded counts of materials and texture images. |
static / rigged / animation_count | Catalog static marker, rigging flag and animation count. A character name does not imply a rig or animation. |
available_formats / dimensions_m_y_up | Recorded formats and dimensions in meters with Y up; null when unknown. Check file notes for actual ZIP contents. |
locale | Response language; en by default. |
meta.api_version / meta.request_id | API version and request identifier. An ID shown in an example does not identify your own request. |
pagination.total / next_offset | Matching rows and the next offset; null means the final page. |
scope / status / checked_on / parent_id | Entry scope, verification status and date, and parent scene. verified confirms current GLB contents and classification, not engine certification. Entries, extracted modules and repeated instances are different counts. |
tested_engines / validation | Hash-matched engine import records and their scope; not a performance or other-engine certificate. |
download.files / files | GLB/ZIP format, filename, bytes, SHA256 and file URL. The array itself is not the file. |
login_required / purchase_required | Whether sign-in or purchase is required. Both are false for free models; paid packs do not expose private URLs. |
files[].purpose / recommended | Purpose of each file and recommended choice. complete_model_zip recommends the complete single-model ZIP. |
detail_url / poster_url / preview_url / license_url | Absolute detail, poster, scene preview and license page URLs. A preview page is not a model file. |
price.amount_minor / currency | Integer minor currency units: USD 799 means US$7.99. null means unknown, not free. |
price.phase / policy / checkout_enabled | Current price phase, pricing policy and checkout availability. Server-calculated prices may change; this API creates no checkout. |
access / availability | Pack access (free or paid_one_time) and availability (free_download, on_sale, unavailable). Follow the returned state. |
contents.model_count / instance_count / source_model_ids | Source model count, scene instance count and source IDs. Instances, LODs and collision proxies are not extra independent models. |
ownership / delivery | Public metadata does not query account ownership. Public delivery names and sizes grant no paid-file access. |
delivery.download_url | May appear only while the pack is publicly free. Omitted for paid packs. |
license / guidance | License summaries and public guidance. Read the linked terms and asset-specific notes for commercial use, resale restrictions and CC0 exceptions. |
null | Unknown or inapplicable; do not silently replace with 0, false or a verified claim. |
Pagination
Use next_offset until it becomes null. Keep filters unchanged between pages; total is the number matching those filters.
const base = "https://3dmodelhub.io/api/v1";
let offset = 0;
while (offset !== null) {
const query = new URLSearchParams({ limit: '20', offset: String(offset), locale: "en" });
const response = await fetch(base + '/models?' + query, { credentials: 'omit' });
const body = await response.json();
if (!response.ok) throw new Error(body.error?.code || response.status);
for (const model of body.data) console.log(model.id, model.name);
offset = body.pagination.next_offset;
}Download a file
The downloads endpoint returns JSON. Fetch a URL in data.files to receive the actual GLB or ZIP. Free files need no login or API key.
curl --fail --location --output 'ancient_pine_LOD1.glb' 'https://3dmodelhub.io/download/ancient_pine/model-0/'
curl --fail --location --output 'ancient_pine_complete.zip' 'https://3dmodelhub.io/download/ancient_pine/package/'
# macOS: compare the first column with data.files[].sha256
shasum -a 256 'ancient_pine_LOD1.glb'Range: bytes=0-1023 · 206 Partial Content · ETag / If-Range
No account or API key is required for public metadata or free individual model files. Paid pack metadata is public; paid file downloads retain the website purchase checks.
Errors and retries
Read error.code in your program, keep request_id for support, and check the HTTP status. Error messages are English. On 429, wait for Retry-After instead of retrying immediately.
{
"error": {
"code": "InvalidArguments",
"message": "Check the documented parameters and their allowed values."
},
"request_id": "00000000-0000-4000-8000-000000000000"
}X-Request-Id = request_id · Access-Control-Allow-Origin: * · Cache-Control: no-store
| HTTP | error.code | Description |
|---|---|---|
| 400 | InvalidArguments | Unknown/repeated argument, missing topic, or limit outside 1–20. |
| 404 | NotFound | No published entry or no public endpoint. |
| 405 | MethodNotAllowed | GET, HEAD, OPTIONS |
| 414 | InvalidArguments | URL > 4096 |
| 429 | RateLimited | Retry-After: 60 |
The downloads endpoint returns JSON. Fetch a URL in data.files to receive the actual GLB or ZIP. Free files need no login or API key.
File routes may also return 416 for invalid ranges or 503 for storage/integrity failures; paid files may return 401/402. Check status before saving a response as a model.