3D Valley Assets API

The Assets API from 3D Valley — 4 operation(s) for assets.

Operations 4

GET /assets Search the CC0 library #
GET /assets/{id} One asset with its files, scale, credit line and import notes #
GET /assets/{id}/download Redirect to a file on the CDN #
GET /assets/{id}/preview Redirect to the preview picture #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/3dvalley-com:3dvalley-com-assets-api"
All apis
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.

Get an API 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 Specification

3dvalley-com-assets-api-openapi.yml Raw ↑
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.