JADE REALMS / Documentation développeur
Référence REST API
Les métadonnées publiques et modèles gratuits ne nécessitent ni compte ni clé. Les fichiers payants gardent la vérification d’achat du site.
Démarrage rapide
Rechercher → consulter → télécharger
curl --fail 'https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
Authentification et accès
Les métadonnées publiques et modèles gratuits ne nécessitent ni compte ni clé. Les fichiers payants gardent la vérification d’achat du site.
- Base URL
https://3dmodelhub.io/api/v1- API version
- 1.0.0
- Langues
- en · zh · ja · ko · es · de · fr
GET/HEAD lisent, OPTIONS gère CORS. Dans le navigateur utilisez credentials: omit. Les paramètres inconnus, répétés ou invalides donnent 400.
Les métadonnées partagent une limite au mieux de 120 requêtes par minute et IP dans chaque site Cloudflare. Ce n’est pas un quota de fichiers gratuits.
Uniquement des faits publiés. Les inconnues restent null ; les vérifications portent sur le hash GLB et ne certifient pas les performances.
GET/api/v1/site
Informations du site
Read published categories, styles, languages and counts. Catalog entries are not necessarily independent models; read the scope notes.
jaderealms_get_site_info
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/site?locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/site?locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"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": "Rochers et terrains",
"count": 29
},
{
"id": "vegetation",
"name": "Arbres et plantes",
"count": 18
},
{
"id": "architecture",
"name": "Bâtiments et architecture",
"count": 71
},
{
"id": "creatures",
"name": "Créatures et animaux",
"count": 30
},
{
"id": "props",
"name": "Accessoires et objets",
"count": 96
},
{
"id": "environment",
"name": "Éléments d’environnement",
"count": 8
}
],
"styles": [
{
"id": "ancient",
"name": "Style ancien",
"count": 72
},
{
"id": "fantasy",
"name": "Fantastique",
"count": 64
},
{
"id": "scifi",
"name": "Science-fiction",
"count": 22
},
{
"id": "modern",
"name": "Style moderne",
"count": 23
},
{
"id": "toon",
"name": "Dessin animé",
"count": 78
},
{
"id": "anime",
"name": "Anime et 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/fr/",
"models": "https://3dmodelhub.io/fr/models/",
"kits": "https://3dmodelhub.io/fr/kits/",
"guide": "https://3dmodelhub.io/fr/guide/",
"license": "https://3dmodelhub.io/fr/license/"
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "263c4ca9-b35c-41b0-b0a5-8c09e4a6f68b"
}
}GET/api/v1/models
Rechercher des modèles
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
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
qquery · string | Facultatif | "" | ≤ 120 | Mot-clé dans les noms et descriptions, sans recherche sémantique. |
categoryquery · string | Facultatif | — | terrain · vegetation · architecture · creatures · props · environment | Catégorie. |
stylequery · string | Facultatif | — | ancient · fantasy · scifi · modern · toon · anime | Style. |
tested_enginequery · string | Facultatif | — | godot · unity · unreal | Vérification d’import avec hash GLB identique. |
max_trianglesquery · integer | Facultatif | — | 1–100000000 | Triangles maximum. |
limitquery · integer | Facultatif | 8 | 1–20 | Lignes par page. |
offsetquery · integer | Facultatif | 0 | 0–10000 | Position initiale. |
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/models?q=pine&limit=2&locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"data": [
{
"id": "ancient_pine",
"name": "Pin ancien",
"name_en": "Ancient Pine",
"category": "vegetation",
"category_name": "Arbres et plantes",
"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/fr/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": "c3fb5269-2a72-46f9-853c-02d51006f1d9"
}
}GET/api/v1/models/{id}
Détail du modèle
Use an exact ID from search to get files, materials, animations, dimensions and hash-matched engine checks.
jaderealms_get_model_details
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
idpath · string | Obligatoire | — | ^[A-Za-z0-9_-]+$ · 1–100 | ID exact renvoyé par la liste. |
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/models/ancient_pine?locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/models/ancient_pine?locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"data": {
"id": "ancient_pine",
"name": "Pin ancien",
"name_en": "Ancient Pine",
"category": "vegetation",
"category_name": "Arbres et plantes",
"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/fr/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": "Vérifications statiques du GLB par défaut actuel sur ordinateur. Sans certification de performance, rig, animation, collisions des modèles ou LOD automatique.",
"unreal": "Unreal Engine : non testé"
},
"license": {
"url": "https://3dmodelhub.io/fr/license/",
"commercial_games_and_animation": true,
"cc0_foundation_exception": false
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "a74978df-2afe-45dc-87cc-6e0b7272a5b6"
}
}GET/api/v1/kits
Packs de scènes
Read public scene packs, current public prices and delivery summaries. Personal ownership is not queried.
jaderealms_list_scene_kits
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/kits?locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/kits?locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"data": [
{
"id": "meteor-ancient-town",
"name": "Cité Météore · Rue du Thé",
"summary": "Explorez les modèles originaux le long du canal, du pont de pierre et des maisons de thé. Changez de vue et d’éclairage.",
"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/fr/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/fr/kits/meteor-ancient-town/",
"preview_url": "https://3dmodelhub.io/preview/meteor-ancient-town/?lang=fr",
"license_url": "https://3dmodelhub.io/fr/license/"
},
{
"id": "moonlit-bamboo",
"name": "Porte de lune et bambou",
"summary": "Une cour paisible avec bambous, lanternes de pierre et porte de lune. Explorez les modèles d’origine, changez la lumière et approchez-vous des détails.",
"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/fr/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/fr/scenes/moonlit-bamboo/",
"preview_url": "https://3dmodelhub.io/fr/scenes/moonlit-bamboo/#preview",
"license_url": "https://3dmodelhub.io/fr/license/"
},
{
"id": "sunward-modern-town",
"name": "Sunward Ville Moderne",
"summary": "Une ville lumineuse aux façades crème, commerces bleu-vert et rues reliées. Boutiques, habitations et espaces publics pour composer votre environnement de jeu.",
"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/fr/products/sunward-modern-town/",
"checks": [
"Réimportation Blender 4.3.2 : les 175 GLB individuels et les 54 GLB de la ville ont passé les contrôles.",
"Godot 4.6.3 sans interface : 175 ressources, 282 formes et 846 échantillons extérieurs validés. Sans compression destructive : 395 326 triangles de base sans dégénérescence.",
"Ville dans Godot 4.6.3 : 54 GLB et 30 images ; 17 fichiers par défaut et 17 collisions ensemble. 410 composants, 1 230 échantillons extérieurs, 560 à l’échelle d’un personnage et 8 trajets validés."
],
"limitations": [
"Extérieurs uniquement. Sans intérieurs, personnages, missions, conduite ni interactions commerciales.",
"Sans LOD automatique, streaming, navigation complète ou contrôleur complet de personnage.",
"Les collisions couvrent les bâtiments et le support du sol, pas tous les objets urbains, troncs ou petits obstacles. Huit trajets ne garantissent pas que toute la ville soit praticable.",
"Godot n’applique pas KHR_materials_ior. Le verre peut varier entre moteurs.",
"Aucun test de FPS GPU, validation Unity/Unreal ou certification mobile.",
"Les assemblages de bâtiments se répètent. LOD0 couvre seulement 26 bâtiments ; les 102 autres n’ont pas le même détail. La ville par défaut compte 5 358 342 triangles et nécessite une optimisation. Les contrôles techniques ne constituent pas une validation visuelle commerciale finale. Utilisez les GLB runtime/Collision vérifiés."
]
},
"detail_url": "https://3dmodelhub.io/fr/products/sunward-modern-town/",
"preview_url": "https://3dmodelhub.io/preview/sunward-modern-town/?lang=fr",
"license_url": "https://3dmodelhub.io/fr/license/"
},
{
"id": "creek-village",
"name": "Village du Ruisseau V5",
"summary": "Un petit village entre berges herbeuses, ruisseau et moulin à eau. Comprend la scène Blender V5 modifiable avec correction des ombres de l’herbe.",
"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/fr/kits/creek-village/",
"checks": [
"La correction des ombres a été vérifiée en lecture locale dans l’aperçu des matériaux de Blender. La comparaison consignée conserve géométrie, transformations, nœuds et animation."
],
"limitations": [
"Un environnement déjà composé. Objets et instances d’herbe ne comptent pas comme des modèles distincts.",
"Le navigateur présente une adaptation GLB statique ; matériaux procéduraux, lumière et animation originale peuvent différer.",
"Aucune validation d’importation Godot, Unity ou Unreal, de collision, de navigation ou de FPS sur appareil cible.",
"La vérification de lecture ne certifie ni le rendu final Cycles de l’animation ni l’absence de défaut à chaque image."
]
},
"detail_url": "https://3dmodelhub.io/fr/kits/creek-village/",
"preview_url": "https://3dmodelhub.io/preview/creek-village/?lang=fr",
"license_url": "https://3dmodelhub.io/fr/license/"
}
],
"meta": {
"api_version": "1.0.0",
"request_id": "02a00fbb-32f8-42c7-bb8a-a86bda238178"
}
}GET/api/v1/kits/{id}
Détail du pack
Read one pack’s public contents, validation and delivery metadata. A filename and size grant no paid-file access.
jaderealms_get_scene_kit_details
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
idpath · string | Obligatoire | — | ^[A-Za-z0-9_-]+$ · 1–100 | ID exact renvoyé par la liste. |
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/kits/creek-village?locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/kits/creek-village?locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"data": {
"id": "creek-village",
"name": "Village du Ruisseau V5",
"summary": "Un petit village entre berges herbeuses, ruisseau et moulin à eau. Comprend la scène Blender V5 modifiable avec correction des ombres de l’herbe.",
"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/fr/kits/creek-village/",
"checks": [
"La correction des ombres a été vérifiée en lecture locale dans l’aperçu des matériaux de Blender. La comparaison consignée conserve géométrie, transformations, nœuds et animation."
],
"limitations": [
"Un environnement déjà composé. Objets et instances d’herbe ne comptent pas comme des modèles distincts.",
"Le navigateur présente une adaptation GLB statique ; matériaux procéduraux, lumière et animation originale peuvent différer.",
"Aucune validation d’importation Godot, Unity ou Unreal, de collision, de navigation ou de FPS sur appareil cible.",
"La vérification de lecture ne certifie ni le rendu final Cycles de l’animation ni l’absence de défaut à chaque image."
]
},
"detail_url": "https://3dmodelhub.io/fr/kits/creek-village/",
"preview_url": "https://3dmodelhub.io/preview/creek-village/?lang=fr",
"license_url": "https://3dmodelhub.io/fr/license/"
},
"meta": {
"api_version": "1.0.0",
"request_id": "2bc42e3d-a719-4b21-9e65-a3bad5917736"
}
}GET/api/v1/guidance
Utilisation et licence
topic is required: license, downloads, engines or purchases. The linked license page contains the applicable terms.
jaderealms_get_usage_guidance
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
topicquery · string | Obligatoire | — | license · downloads · engines · purchases | Sujet du guide public. |
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/guidance?topic=license&locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/guidance?topic=license&locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"data": {
"topic": "license",
"links": {
"home": "https://3dmodelhub.io/fr/",
"models": "https://3dmodelhub.io/fr/models/",
"kits": "https://3dmodelhub.io/fr/kits/",
"guide": "https://3dmodelhub.io/fr/guide/",
"license": "https://3dmodelhub.io/fr/license/"
},
"confirmed": true,
"commercial_games_and_animation": true,
"raw_asset_resale": false,
"repackaged_asset_distribution": false,
"paid_pack_terms_url": "https://3dmodelhub.io/fr/license/",
"cc0_exceptions": {
"note": "Project redistribution restrictions do not override the disclosed CC0 foundation rights. Consult the exact source records.",
"url": "https://3dmodelhub.io/fr/license/#cc0-foundations",
"model_ids": [
"ancient_east_water_buffalo",
"anime_jrpg_coastal_wind_cliff"
]
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "242f7e42-815a-4f3f-984b-75f07c9e239d"
}
}GET/api/v1/models/{id}/downloads
Téléchargements gratuits
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
| Paramètres | Obligatoire | Valeur initiale | Valeurs autorisées | Description |
|---|---|---|---|---|
idpath · string | Obligatoire | — | ^[A-Za-z0-9_-]+$ · 1–100 | ID exact renvoyé par la liste. |
localequery · string | Facultatif | "en" | en · zh · ja · ko · es · de · fr | Langue. |
curl --fail 'https://3dmodelhub.io/api/v1/models/ancient_pine/downloads?locale=fr'const response = await fetch("https://3dmodelhub.io/api/v1/models/ancient_pine/downloads?locale=fr", {
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=fr") as response:
body = json.load(response)
print(body['data'])Exemple de réponse · HTTP 200
Exemples issus du catalogue publié actuel. Quantités, prix et identifiants peuvent changer.
{
"locale": "fr",
"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/fr/license/",
"commercial_games_and_animation": true,
"cc0_foundation_exception": false
}
},
"meta": {
"api_version": "1.0.0",
"request_id": "664954bf-520b-4255-a6b5-50e2dc4eb664"
}
}Champs de réponse
| 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
Utilisez next_offset jusqu’à null en conservant les filtres. total est le nombre de résultats.
const base = "https://3dmodelhub.io/api/v1";
let offset = 0;
while (offset !== null) {
const query = new URLSearchParams({ limit: '20', offset: String(offset), locale: "fr" });
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;
}Télécharger un fichier
downloads renvoie du JSON. Suivez url dans data.files pour obtenir GLB ou ZIP. Les fichiers gratuits ne nécessitent pas de connexion.
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
Les métadonnées publiques et modèles gratuits ne nécessitent ni compte ni clé. Les fichiers payants gardent la vérification d’achat du site.
Erreurs et reprises
Vérifiez HTTP et error.code ; conservez request_id. Les messages sont anglais. Pour 429, attendez Retry-After.
{
"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 |
downloads renvoie du JSON. Suivez url dans data.files pour obtenir GLB ou ZIP. Les fichiers gratuits ne nécessitent pas de connexion.
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.