3D Valley Assets API
The Assets API from 3D Valley — 4 operation(s) for assets.
The Assets API from 3D Valley — 4 operation(s) for assets.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/3dvalley-com:3dvalley-com-assets-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: 3D Valley Assets API
version: 1.0.0
summary: A free CC0 library of 3D models, textures and HDRIs, and 3D generation, retexturing and remeshing for credits.
description: 'Docs: https://3dvalley.com/docs/api. MCP server: https://3dvalley.com/mcp.'
contact:
email: hello@3dvalley.com
url: https://3dvalley.com/docs/api
servers:
- url: https://3dvalley.com/api/v1
security:
- bearer: []
- {}
tags:
- name: Assets
paths:
/assets:
get:
operationId: searchAssets
summary: Search the CC0 library
security:
- bearer: []
- {}
parameters:
- name: q
in: query
required: false
schema:
type: string
description: Words, searched by meaning and keyword.
- name: type
in: query
required: false
schema:
type: string
enum:
- model
- texture
- hdri
description: Asset type.
- name: category
in: query
required: false
schema:
type: string
description: A category slug (GET /categories).
- name: style
in: query
required: false
schema:
type: string
enum:
- realistic
- stylized
- lowpoly
- scan
description: Style.
- name: max_tris
in: query
required: false
schema:
type: integer
minimum: 0
description: At most this many triangles.
- name: min_tris
in: query
required: false
schema:
type: integer
minimum: 0
description: At least this many triangles.
- name: min_size_m
in: query
required: false
schema:
type: number
minimum: 0
description: Largest side at least this many metres.
- name: max_size_m
in: query
required: false
schema:
type: number
minimum: 0
description: Largest side at most this many metres.
- name: maps
in: query
required: false
schema:
type: string
description: Comma-separated maps the asset must all have.
- name: min_res
in: query
required: false
schema:
type: string
description: 'Smallest texture resolution: 1k, 2k, 4k.'
- name: format
in: query
required: false
schema:
type: string
enum:
- glb
- gltf
- obj
- stl
- zip
- hdr
- exr
- png
- jpg
description: A format we serve it in.
- name: rigged
in: query
required: false
schema:
type: boolean
description: Rigged or not.
- name: animated
in: query
required: false
schema:
type: boolean
description: Animated or not.
- name: source
in: query
required: false
schema:
type: string
enum:
- polyhaven
- ambientcg
- kenney
- kaykit
- quaternius
- gobkit
- smithsonian
- met
- khronos
- openhdri
- cgbookcase
- texturecan
description: Where it comes from.
- name: pack
in: query
required: false
schema:
type: string
description: 'A pack id ("kn:mini-skate") from a result: every asset of that kit, so a game keeps one style.'
- name: sort
in: query
required: false
schema:
type: string
enum:
- relevance
- popular
- newest
default: relevance
description: Order.
- name: similar_to
in: query
required: false
schema:
type: string
description: 'An asset id: the nearest by meaning.'
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 50
default: 20
description: Page size. A search pages through its first 200 results.
- name: cursor
in: query
required: false
schema:
type: string
description: next_cursor of the previous page.
- name: detail
in: query
required: false
schema:
type: string
enum:
- concise
- full
default: concise
description: How much of each asset.
responses:
'200':
description: Matching assets
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/Asset'
total:
type: integer
next_cursor:
type:
- string
- 'null'
'400':
description: invalid_param
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: rate_limited
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Assets
/assets/{id}:
get:
operationId: getAsset
summary: One asset with its files, scale, credit line and import notes
parameters:
- name: id
in: path
required: true
schema:
type: string
description: ph:wooden_barrel_01
responses:
'200':
description: The asset
content:
application/json:
schema:
$ref: '#/components/schemas/Asset'
'404':
description: not_found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Assets
/assets/{id}/download:
get:
operationId: downloadAsset
summary: Redirect to a file on the CDN
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Asset id
- name: format
in: query
schema:
type: string
- name: res
in: query
schema:
type: string
- name: map
in: query
schema:
type: string
responses:
'302':
description: 'Location: the file'
'404':
description: not_found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Assets
/assets/{id}/preview:
get:
operationId: assetPreview
summary: Redirect to the preview picture
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Asset id
- name: size
in: query
schema:
type: string
enum:
- '256'
- '512'
- '1024'
responses:
'302':
description: 'Location: the picture'
tags:
- Assets
components:
schemas:
Asset:
type: object
properties:
id:
type: string
name:
type: string
type:
type: string
category:
type:
- string
- 'null'
tags:
type: array
items:
type: string
license:
type: string
size_m:
type:
- array
- 'null'
items:
type: number
tris:
type:
- integer
- 'null'
maps:
type: array
items:
type: string
max_res:
type:
- string
- 'null'
preview:
type: string
download:
type:
- string
- 'null'
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
- docs
properties:
code:
type: string
enum:
- unauthorized
- insufficient_scope
- not_found
- invalid_param
- insufficient_credits
- spend_cap_reached
- rate_limited
- idempotency_conflict
- input_rejected
- provider_failed
- conflict
- unavailable
message:
type: string
fix:
type: string
docs:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer
description: An API key (3dv_live_...) or an OAuth access token.