Asset Bench GET /api/v1 →

AssetBench Cloud API · Checks are free

Game and app assets, ready for mobile.

Send a 3D model or an app icon, get back files ready for your game engine or the app stores. Lighter models for Unity, Unreal, Godot, Roblox and the web, and every app icon and screenshot size, in one request. Nothing to install.

Free key in one clickNo card neededFiles never stored
A cartoon gecko character in a Hawaiian shirt, after the API cut it to a quarter of its triangles
21,781−74%triangles, from 83,701
4.3 MB−70%file size, from 14.2 MB

How it works

An API is a way for one program to ask another to do a job. You send a file, AssetBench does the work in the cloud, and you get the finished files back, usually in a few seconds.

1 Your fileA model (.glb, .fbx, .obj) or an icon (.png).
2 Send itFrom this page, one terminal command, or your own script.
3 We fix itFewer triangles, smaller textures, LODs, every icon size.
4 Use itA ZIP ready to drag into your engine or upload to the store.

A real model, one request

A rigged cartoon character (sunny-gecko.glb, 14.2 MB) sent to /api/v1/game-ready as a character for a mid-range phone in Unity. Drag the slider: it looks the same, with a quarter of the triangles.

Before: the original mesh, densely packed with triangles After: the optimised mesh with far fewer triangles BeforeAfter
Triangles83,701 → 21,781−74%
File size14.2 MB → 4.3 MB−70%
Texture memory on the phone64 MB → 16 MB−75%
Levels of detail4.5 · 1.4 · 0.45 MB
PivotFeet on the ground
Also in the ZIPUnity import notes
curl -X POST https://www.assetbench.co.uk/api/v1/game-ready \
  -H "Authorization: Bearer YOUR_KEY" \
  -F "file=@sunny-gecko.glb" -F "role=character" \
  -F "device=mid" -F "engine=unity" -o pack.zip

Add ktx2=true and it drops to 2.1 MB with 4 MB of texture memory, scoring mobile-ready on a mid-range phone, at some cost to texture sharpness.

What it does

Every plan includes all three. Click a card to try it below.

Loading…

Works with

The API sends back standard files, so they open in the programs you already use. Game-ready packs include step-by-step import notes for the engine you pick.

Game engines and 3D

U
UnityDrag the folder into Assets (glTFast package). Each GLB becomes a prefab.
UE
Unreal Engine 5Content Browser › Import. Static or skeletal meshes.
G
Godot 4Copy the folder in. Godot opens GLB natively.
R
Roblox StudioFile › Import 3D. Already inside Roblox’s 20k triangle and 1024px limits.
W
Web: three.js, Babylon.js, model-viewerSmall GLBs with Meshopt and KTX2 for fast loading.
B
BlenderFile › Import › glTF 2.0, to keep editing.

Apps and stores

X
XcodeDrop AppIcon.appiconset into Assets.xcassets.
A
Android StudioCopy the res/ folder: launcher and adaptive icons.
S
App Store & Google PlayScreenshots at every size the stores require.

Do I need to install anything?

No. The API runs on our servers. Pick whichever way suits you; all three use the same free key.

NO CODE

Use this page

Get a free key below, drop your file into the playground, press Run and download the result. Good for trying it out.

Get a free key ↓
ONE COMMAND

From a terminal

Windows, Mac and Linux already have curl. Paste one line, get the file back:

curl -X POST https://www.assetbench.co.uk/api/v1/game-ready -H "Authorization: Bearer YOUR_KEY" -F "file=@model.glb" -o pack.zip
AUTOMATE

From your code or build

Call it from a Unity editor script (C#), Python, Node.js or your CI, so every model is checked and optimised automatically. Copy-paste samples are below.

See the code ↓

Prefer clicking to coding? The same tools are on assetbench.co.uk as normal web pages, included with All Access.

Pricing

Start free. The API comes included with the £25/month All Access subscription, and studios that need 5,000 operations a month move to Studio. One operation = one processed file (a game-ready pack, icon pack or screenshot set counts once; a batch counts each file). Checks are always free.

Loading…

Need more than 5,000 operations a month? Email Workbench5@gmail.com, and tell us what you're building.

Try it · 1. Get your API key

Send it as Authorization: Bearer <key>. It is kept in this browser only so the playground and code samples can use it.

All Access subscriber? Your All Access licence key is already your API key: paste it above. Free keys: one per network. Lost one? Click Get a free API key again from the same network: you get a new key, the old one stops working, and this month’s usage carries over.

Try it · 2. Send a file

Runs real requests with your key, so they count against your quota (checks are free).

Drop a model here or click to browse
.glb · or .fbx / .obj / .gltf / .zip to convert · up to 25 MB free, 50 MB All Access, 100 MB Studio

Try it · 3. Copy the code

Follows the playground settings above.


    

Questions

What is an API, in plain English?

A way for programs to talk to each other. Instead of opening a website and clicking, your script (or this page) sends a file to an address like /api/v1/game-ready and gets the finished files back. The key is like a password that says the request is yours.

Do you keep my files?

No. Each file is processed in memory and sent straight back; nothing is saved on our side. We only count how many operations each key has used.

Which files can I send?

3D: GLB, glTF, OBJ and FBX (FBX and OBJ are converted to GLB first), including models with WebP textures. Images: PNG, JPEG and WebP. Up to 25 MB per file on Free, 50 MB on All Access and 100 MB on Studio. Draco-compressed GLBs can be checked but not processed yet.

What counts as an operation?

One processed file. A game-ready pack, an icon set or a set of screenshots each count once, however many files come back. Checks are free and never count.

I already pay for All Access. Do I need anything else?

No. Your All Access licence key is also your API key, with 1,000 operations a month. Paste it into the key box below.

What happens if I run out?

Requests return a clear "quota used up" message until the month resets. Nothing is charged automatically; you can move to Studio for 5,000 a month.

Reference

Send files as multipart/form-data (field file, options as fields) or as the raw body with options in the query string. Responses are the file itself, with a JSON summary in the X-AssetBench-Summary header and your quota in X-Quota-Remaining. Add ?output=json to get the full report with the file base64-encoded.

EndpointOptionsReturns
1 · Check a model (free)
POST /api/v1/checkrole prop|vehicle|character|hero|environment · device low|mid|high|quest · engine unity|unreal|godot|roblox|webJSON: size, triangles, draw calls, materials, texture memory, animation data, scored checks, and a score per device class. resolved and notes show the settings used. Scores 90+ are mobile-ready, 60–89 need work, under 60 are not ready. Free.
2 · Make it game-ready
POST /api/v1/game-readydevice low|mid|high|quest · role prop|vehicle|character|hero|environment · engine unity|unreal|godot|roblox|web · pivot bottom|center|keep · lods · collision · keepAnimations · ktx2ZIP: name_LOD0/1/2.glb, name_collision.glb, REPORT.txt, IMPORT-ENGINE.md, report.json.
3 · App store assets
POST /api/v1/app-assetsplatforms ios,android,watchos (default: all three) · background · adaptiveScaleZIP: AppIcon.appiconset + Contents.json, Android mipmaps + adaptive icons, Play Store 512.
POST /api/v1/app-assets/screenshots1–10 images (or a ZIP) · devices iphone-6.9,iphone-6.5,iphone-5.5,ipad-13,ipad-12.9,android-phone,android-tablet · fit cover|contain · background · format jpeg|pngZIP: one folder per device, sized exactly, opaque.
Many files at once
POST /api/v1/batchoperation (check, game-ready, app-assets or any advanced step) + that operation's options · files as several files fields or one ZIPZIP: results/<file>/… + manifest.json (JSON for audit). Up to 50 files per request.
Advanced: single steps
POST /api/v1/3d/optimizetarget (plain English ok) · ratio 0–1 · maxTextureSize · compress · lockBorder · ktx2Optimised .glb; with output=json, a before/after report.
POST /api/v1/3d/reduceratio 0–1 (default 0.5) or triangles (target count, wins over ratio) · lockBorder · error 0–1 (quality cap; default loosens up to 0.1 as needed to hit the target) · acrossSeams auto|true|false (collapse across UV seams when a model won't reduce otherwise; auto = untextured models only, since it stretches textures)Reduced .glb, geometry only (textures and compression untouched); with output=json, triangle counts before/after. Free.
POST /api/v1/3d/lodspreset standard|aggressive|minimal or levels "1,0.5,0.25" · compressZIP: lod0.glb… + report.json.
POST /api/v1/3d/convertto glb|gltf|obj · scaleFBX / OBJ / glTF → GLB; GLB → glTF or OBJ (ZIPs). Send a ZIP when textures sit next to the model. FBX output is not offered.
POST /api/v1/textures/ktx2PNG/JPEG/WebP: mode etc1s|uastc · normalMap · linear · mipmaps · maxSize. GLB: mode auto (ETC1S colour, UASTC normals).ktx2, or a GLB with KHR_texture_basisu textures.
POST /api/v1/ios/xcassetsas app-icons, iOS by defaultZIP with the Xcode asset catalog.
Also
POST /api/v1/textures/resizemaxSize · powerOfTwo · format png|jpeg|webp · quality · losslessResized image.
GET /api/v1/auth/me · /pricing · /devices · /formats · /intent?target=…Quota; plans and products; device budgets; formats and sizes; how a plain-English target compiles.
Older paths still work: /3d/audit, /3d/inspect, /3d/game-ready, /ios/app-icons, /ios/screenshots, /2d/….

Errors

Errors are JSON: {"error":{"code":"quota_exhausted","message":"…"}}. Status codes: 400 bad option · 401 missing/invalid key · 403 engine not in plan · 413 file too large · 415 wrong file type (Draco-compressed GLBs can be audited but not processed yet) · 422 unreadable file · 429 quota used up.