Developers
API & developer tools
Every published Grab3D model is listed in a free, keyless JSON API: static files, no authentication, CC0 content. Build asset browsers, engine plugins or jam tools on top of it.
Static JSON API v1
GET /api/v1/models.json- All 803 published models with tier, category, kit, tags, specs, media and download URLs.
GET /api/v1/models/{slug}.json- A single model, e.g.
/api/v1/models/treasure-chest.json GET /api/v1/kits.json- All 22 kits with their published model slugs.
Model fields
| Field | Content |
|---|---|
slug | URL-safe id, also the file-name stem |
name | object with en / de / es |
summary | one-sentence English description |
category, categoryName | e.g. "props", "Props & Items" |
tier | "high-detail" or "lightweight" |
style | "stylized", "realistic", "low-poly", "cartoon" or null |
kit | null or { slug, name, page } |
tags | lowercase English tags |
specs | triangles, trianglesLight, texturePx, texturePxLight, maps, dimensionsMeters [W, D, H], movingParts |
media | thumbnail, thumbnailSmall, og, previewGlb, turntableWebm, turntableMp4 (absolute URLs) |
files | array of { format, variant, file, bytes, url }. Formats: glb, fbx, blend, usdz, obj-zip. Variant: full or light |
rigged | null or { animations, origin, preview, files } |
origin | how the model was made: { method, aiContent, aiAssistedCode, detail, licenseUrl, manifestUrl }. method is "ai-assisted" (base mesh and textures from an AI image-to-3D tool, then edited in Blender, aiContent true) or "procedural" (built by Blender scripts, aiContent false, aiAssistedCode true because the scripts were written with an AI coding assistant). aiAssistedCode is null for ai-assisted models. Use it for AI disclosures such as the one on Steam |
relatedVariant | slug of the low-poly / original counterpart, or null |
page, license, created | model page URL, "CC0-1.0", ISO date |
Download URLs have the form https://grab3d.com/dl/<slug>/<file>. The GLBs use no mesh
compression (no Draco, no Meshopt), so any glTF loader reads them without an extra decoder. For smaller
files in a web app, compress a copy with gltf-transform.
Each package folder also contains LICENSE.txt (CC0 text plus an “Origin / AI disclosure” section) and
manifest.json (files, triangle count, texture size and the same origin object), for example
/dl/treasure-chest/manifest.json.
Examples
// JavaScript
const res = await fetch('https://grab3d.com/api/v1/models.json');
const { models } = await res.json();
const light = models.filter((m) => m.tier === 'lightweight');
const glb = light[0].files.find((f) => f.format === 'glb' && f.variant === 'full');
console.log(glb.url, glb.bytes); # Python
import requests
models = requests.get('https://grab3d.com/api/v1/models.json').json()['models']
rigged = [m['slug'] for m in models if m['rigged']] # curl + jq
curl -s https://grab3d.com/api/v1/models/samurai.json | jq '.files[] | select(.format == "fbx") | .url' Blender add-on
Browse the library and import models into your scene without leaving Blender. One file, no dependencies,
works with Blender 3.6+. It reads /api/v1/models.json and imports the full-quality GLB, or the
lighter GLB where a model offers one.
- Blender → Edit → Preferences → Add-ons → Install… → select the file → enable.
- Open the sidebar in the 3D viewport (N) → Grab3D tab.
- Search, click, imported. Everything is CC0, including the add-on itself.
Fair use & versioning
The API consists of static files that change when new models are published. Please cache responses in your
tools instead of fetching on every start. The v1 schema is stable. Breaking changes will ship as
v2. Questions or plugin ideas? Post them on the request board.