Public API

Lazytextures Public API

A free, open REST API to browse, search, filter, and download thousands of CC0 3D assets — Materials, Models, HDRIs, Textures, and more. No authentication required.

Introduction

The Lazytextures API gives you programmatic access to the full asset library. All assets are CC0 — completely free to use in any project, commercial or personal, with no attribution required.

  • No API key or authentication required for any public endpoint.
  • All responses are JSON.
  • Asset file paths returned by the API can be used directly to download files.
  • The API is used by Lazybridge to power the in-app asset browser.

Base URL & Format

Base URL https://lazytextures.net:3000

Response Envelope

Every endpoint returns a JSON object. Successful responses always include success: true and a timestamp. Errors include success: false and an error message.

Example — Success
// HTTP 200 { "success": true, "timestamp": "2026-03-10T12:00:00.000Z", "data": [ /* ... */ ] }
Example — Error
// HTTP 400 / 404 / 500 { "success": false, "error": "Invalid asset type. Use: models, materials, hdris, textures, or other" }

Asset Types

Wherever you see :assetType in an endpoint, use one of these five values (always lowercase):

models
materials
hdris
textures
other

Models

3D objects packaged as .fbx files inside a ZIP archive per resolution.

Materials

PBR texture sets — Color, Roughness, Normal, AO, Displacement in multiple resolutions.

HDRIs

High-dynamic-range environment maps in .exr format for lighting 3D scenes, packaged as ZIPs per resolution.

Textures

Standalone texture maps — imperfections, decals, overlays — usable across any material workflow.

Other

Additional assets that don't fit the main categories, such as brushes, presets, or apps.

Browse Assets

These endpoints return the full list of all assets for a given type as a single response. Ideal for building local caches or small integrations.

GET /previewsMaterials All materials +

Returns every material asset with name, category, sub-category, tags, preview image path, and download statistics.

Request
GET https://lazytextures.net:3000/previewsMaterials
Response (trimmed)
{ "success": true, "summary": { "totalMaterials": 84 }, "PreviewMaterials": [ { "name": "Concrete01", "category": "Concrete", "subCategory": null, "type": "material", "basePath": "/Assets/Materials/Concrete/Concrete01", "preview": { "path": "/Assets/Materials/Concrete/Concrete01/Preview.png" }, "tags": [ "concrete", "outdoor" ], "downloads": { "total": 342 } } ] }
GET /previewsModels All models +

Returns all 3D model assets. Response key is PreviewModels, summary key is totalModels.

Request
GET https://lazytextures.net:3000/previewsModels
GET /previewsHDRIs All HDRIs +

Returns all HDRI environment maps. Summary key is totalHDRIs.

Request
GET https://lazytextures.net:3000/previewsHDRIs
GET /previewsTextures All textures +

Returns all standalone texture assets. Summary key is totalTextures.

Request
GET https://lazytextures.net:3000/previewsTextures
GET /previewsOther All other assets +

Returns all miscellaneous assets. Summary key is totalOther.

Request
GET https://lazytextures.net:3000/previewsOther

Paginated Browse

GET /previews-paginated/:assetType Browse with pagination & sorting +

Browse any asset type page-by-page with full control over sort order. Ideal for building UIs with infinite scroll or pagination controls.

Query Parameters
ParameterTypeRequiredDescription
offsetintegeroptionalStarting position. Default: 0
limitintegeroptionalItems per page. Default: 20, max: 100
sortstringoptionalSort order. Default: name-asc. See options below.
Sort Options
name-asc name-desc downloads-asc downloads-desc date-asc date-desc category-asc category-desc
Example — Page 2, sorted by downloads
GET https://lazytextures.net:3000/previews-paginated/materials?offset=20&limit=20&sort=downloads-desc
Response (trimmed)
{ "success": true, "assetType": "materials", "sort": "downloads-desc", "pagination": { "total": 84, "offset": 20, "limit": 20, "returned": 20, "currentPage": 2, "totalPages": 5, "hasMore": true, "nextOffset": 40 }, "data": [ /* array of asset objects */ ] }

Asset Details

GET /Asset/:assetType/:assetName Full details for one asset +

Returns complete information for a single asset including all available files (archives, texture maps, model files), their sizes, resolutions, and download paths. Files are grouped by resolution (e.g. 1K, 2K, 4K).

Path Parameters
ParameterTypeRequiredDescription
assetTypestringrequiredOne of: models, materials, hdris, textures, other
assetNamestringrequiredExact asset name as returned by a list or search endpoint.
Example
GET https://lazytextures.net:3000/Asset/materials/Concrete01
Response (trimmed)
{ "success": true, "name": "Concrete01", "assetType": "materials", "category": "Concrete", "tags": [ "concrete", "outdoor" ], "createdAt": "2025-08-14T00:00:00.000Z", "downloads": { "total": 342 }, "archiveFiles": { "4k": [ { "name": "Concrete01_4k.zip", "path": "/Assets/Materials/Concrete/Concrete01/Mat/4k/Concrete01_4k.zip", "size": 22020096, "containsAllAssets": true } ], "8k": [ { "name": "Concrete01_8k.zip", "path": "/Assets/Materials/Concrete/Concrete01/Mat/8k/Concrete01_8k.zip", "size": 75497472, "containsAllAssets": true } ] } }

Categories

GET /Categories/:assetType List all categories +

Returns all available categories for the given asset type, each with its asset count.

Example
GET https://lazytextures.net:3000/Categories/materials
Response (trimmed)
{ "success": true, "assetType": "materials", "totalCategories": 8, "categories": [ { "name": "Concrete", "count": 14 }, { "name": "Metal", "count": 11 } ] }
GET /Categories/:assetType/:category Assets in a specific category +

Returns all assets in a specific category for the given asset type.

Example
GET https://lazytextures.net:3000/Categories/materials/Concrete

Collections

Collections are curated groups of assets. Each asset type has its own set of collections. Replace Model below with Material, HDRI, Texture, or Other for the other types.

GET /ModelCollections List all model collections +

Returns all available model collections with name, description, and asset count.

Example
GET https://lazytextures.net:3000/ModelCollections
GET /ModelCollections/:name Assets in a collection +

Returns all assets belonging to a specific collection.

Example
GET https://lazytextures.net:3000/ModelCollections/Nature

All Collection Endpoints

  • /ModelCollections  &  /ModelCollections/:name
  • /MaterialCollections  &  /MaterialCollections/:name
  • /HDRICollections  &  /HDRICollections/:name
  • /TextureCollections  &  /TextureCollections/:name
  • /OtherCollections  &  /OtherCollections/:name

Download Files

GET /Asset/:assetType/:assetName/download/:fileName Download a specific file +

Streams a ZIP file directly to the client. Each ZIP contains all texture maps (Color, Roughness, Normal, Displacement, AO…) for that resolution. Use the path and name values from the archiveFiles object in the asset detail response to build this URL. Downloads are tracked automatically.

Path Parameters
ParameterTypeRequiredDescription
assetTypestringrequiredAsset type, e.g. materials
assetNamestringrequiredExact asset name
fileNamestringrequiredExact file name as returned in archiveFiles or textureFiles
Example — Download the 4k ZIP (all maps included)
GET https://lazytextures.net:3000/Assets/Materials/Concrete/Concrete01/Mat/4k/Concrete01_4k.zip
Example — Download the 8k ZIP
GET https://lazytextures.net:3000/Assets/Materials/Concrete/Concrete01/Mat/8k/Concrete01_8k.zip

Library Statistics

GET /total-assets Total asset count by type +

Returns the total number of assets in the library broken down by type and category.

Request
GET https://lazytextures.net:3000/total-assets
Response (trimmed)
{ "success": true, "totalAssets": 214, "byType": { "models": 32, "materials": 84, "hdris": 18, "textures": 64, "other": 16 } }
GET /most-downloaded Top downloaded assets +

Returns the most downloaded assets across the library, sorted by total download count.

Query Parameters
ParameterTypeRequiredDescription
typestringoptionalFilter by type: models, materials, etc.
limitintegeroptionalNumber of results. Default: 20
Example
GET https://lazytextures.net:3000/most-downloaded?type=materials&limit=10
GET /newest-assets Most recently added assets +

Returns the most recently added assets across the library, sorted by creation date (newest first).

Query Parameters
ParameterTypeRequiredDescription
typestringoptionalFilter by asset type.
limitintegeroptionalNumber of results. Default: 20
Example
GET https://lazytextures.net:3000/newest-assets?limit=5
GET /recently-downloaded Recently downloaded assets +

Returns assets sorted by most recent download activity — useful for discovering trending assets.

Query Parameters
ParameterTypeRequiredDescription
typestringoptionalFilter by asset type.
limitintegeroptionalNumber of results. Default: 20
Example
GET https://lazytextures.net:3000/recently-downloaded

Response Format

Asset Object

Every asset object returned by list, search, and paginated endpoints shares this common structure:

name
Asset name, e.g. "Concrete_Worn01"
category
Main category, e.g. "Concrete"
subCategory
Sub-category if applicable, or null
type
Internal type label, e.g. "material"
basePath
Relative server path to the asset folder
preview.path
URL path to the preview image (Preview.png)
tags
Array of string tags, e.g. ["concrete","worn"]
downloads.total
Total download count across all files
createdAt
ISO 8601 date string when the asset was added
infosFile
Path to additional metadata JSON, if available

Frequently Asked Questions

Do I need an API key?

+

No. All public endpoints are completely open and require no authentication or API key.

What license do the assets use?

+

All assets are published under the CC0 1.0 Universal license. You can use them in personal or commercial projects with no attribution required.

Are there any rate limits?

+

There are no hard API rate limits for browsing and search endpoints. File downloads are subject to fair-use limits to protect server resources.

How do I get a preview image for an asset?

+

Each asset object contains a preview.path field. Prepend the base URL: https://lazytextures.net:3000 + preview.path to get the full image URL.

How does the search relevance score work?

+

Scores are computed using fuzzy string similarity across asset name (highest weight), category, sub-category, and tags. An exact name match scores higher than a partial match. Download popularity and recency provide a small additional boost.

Can I use the API in my own app or add-on?

+

Yes! The API is free to use. We'd love to hear about integrations — contact Lorenz@lazytextures.com.