assetary

Build on the library

Assetary API

A free, read-only REST API for searching and downloading published Assetary assets. No key needed. Every response only includes assets that passed moderation; nothing pending, rejected or hidden is ever returned. Please respect each asset's license, and credit creators when the license asks for it.

Base URL

https://www.assetary.net/api/v1

Rate limit

60 requests per minute per IP. Over the limit you get 429 with a Retry-After header (seconds).

CORS

GET requests are allowed from any origin, so you can call it from a browser.

Use Assetary in Claude (MCP)

Assetary has an MCP server, so AI apps like Claude can search assets, read details and look up creators for you. No account or login is needed.

https://www.assetary.net/api/mcp
  1. In Claude, open Settings, then Connectors, and choose Add custom connector.
  2. Name it Assetary, paste the URL above, and leave the OAuth fields empty.
  3. Ask something like "find me a free neon overlay on Assetary". Tools: search_assets, get_asset, list_categories, get_creator.

Endpoints

GET/api/v1/assets

Search published assets. Uses the same filters and sorting as the website.

qSearch titles, descriptions and tags.
categoryCategory slug, e.g. hdris, 3d-assets. See /categories.
platformComma-separated: roblox, blender, unity, universal. Matches any.
formatFile extension, e.g. glb, rbxm, hdr, png.
licensefree-no-credit, credit-required or personal-only.
tagA single tag, e.g. neon.
sortnew (default), downloads, likes, or trending (downloads in the last 7 days).
pagePage number, starting at 1.
per_pageResults per page, 1 to 100. Default 24.

Example request

curl "https://www.assetary.net/api/v1/assets?platform=roblox&sort=trending&per_page=2"

Example response

{
  "data": [ {
      "id": "c6b5b322-adc0-4497-85a9-970b442b875d",
      "title": "3d butter squishy",
      "description": "just a 3d butter squishy",
      "url": "https://www.assetary.net/asset/c6b5b322-adc0-4497-85a9-970b442b875d",
      "category": { "slug": "3d-assets", "name": "3D Assets" },
      "platforms": [{ "id": "roblox", "name": "Roblox" }],
      "license": {
        "id": "credit-required",
        "name": "Credit required",
        "summary": "Use it anywhere, but credit the creator wherever the finished work is posted."
      },
      "tags": ["food", "prop"],
      "creator": {
        "username": "Radin",
        "url": "https://www.assetary.net/creator?u=Radin",
        "avatar_url": "https://..."
      },
      "thumbnail_url": "https://...supabase.co/storage/v1/object/public/thumbnails/...",
      "gallery_urls": [],
      "download_url": "https://www.assetary.net/api/v1/assets/c6b5b322-.../download",
      "file_format": "glb",
      "file_size": 29360128,
      "script_status": null,
      "downloads": 12,
      "likes": 3,
      "created_at": "2026-10-03T08:12:44.000Z",
      "updated_at": "2026-10-03T08:12:44.000Z"
    } ],
  "pagination": { "page": 1, "per_page": 2, "total": 24, "total_pages": 12 }
}

GET/api/v1/assets/{id}

One published asset by its ID.

Example request

curl "https://www.assetary.net/api/v1/assets/c6b5b322-adc0-4497-85a9-970b442b875d"

Example response

{ "data": {
    "id": "c6b5b322-adc0-4497-85a9-970b442b875d",
    "title": "3d butter squishy",
    "description": "just a 3d butter squishy",
    "url": "https://www.assetary.net/asset/c6b5b322-adc0-4497-85a9-970b442b875d",
    "category": { "slug": "3d-assets", "name": "3D Assets" },
    "platforms": [{ "id": "roblox", "name": "Roblox" }],
    "license": {
      "id": "credit-required",
      "name": "Credit required",
      "summary": "Use it anywhere, but credit the creator wherever the finished work is posted."
    },
    "tags": ["food", "prop"],
    "creator": {
      "username": "Radin",
      "url": "https://www.assetary.net/creator?u=Radin",
      "avatar_url": "https://..."
    },
    "thumbnail_url": "https://...supabase.co/storage/v1/object/public/thumbnails/...",
    "gallery_urls": [],
    "download_url": "https://www.assetary.net/api/v1/assets/c6b5b322-.../download",
    "file_format": "glb",
    "file_size": 29360128,
    "script_status": null,
    "downloads": 12,
    "likes": 3,
    "created_at": "2026-10-03T08:12:44.000Z",
    "updated_at": "2026-10-03T08:12:44.000Z"
  } }

GET/api/v1/assets/{id}/download

Redirects (302) to the file. This is the download_url returned for every asset; downloads made through it count toward the asset's download stats.

Example request

curl -L -o butter.glb "https://www.assetary.net/api/v1/assets/c6b5b322-adc0-4497-85a9-970b442b875d/download"

Example response

HTTP/1.1 302 Found
Location: https://...supabase.co/storage/v1/object/public/assets/...?download=3d-butter-squishy.glb

GET/api/v1/creators/{username}

A creator's public profile, links and stats.

Example request

curl "https://www.assetary.net/api/v1/creators/Radin"

Example response

{
  "data": {
    "username": "Radin",
    "url": "https://www.assetary.net/creator?u=Radin",
    "avatar_url": "https://...",
    "banner_url": null,
    "bio": "Roblox GFX artist",
    "commissions_url": null,
    "links": { "portfolio": null, "x": null, "youtube": "https://youtube.com/@...", "discord": null,
               "instagram": null, "tiktok": null, "github": null },
    "stats": { "assets": 5, "downloads": 8, "likes": 0, "followers": 2 },
    "assets_url": "https://www.assetary.net/api/v1/creators/Radin/assets",
    "joined_at": "2026-08-23T17:01:10.000Z"
  }
}

GET/api/v1/creators/{username}/assets

A creator's published assets. Accepts the same parameters as /assets.

qSearch titles, descriptions and tags.
categoryCategory slug, e.g. hdris, 3d-assets. See /categories.
platformComma-separated: roblox, blender, unity, universal. Matches any.
formatFile extension, e.g. glb, rbxm, hdr, png.
licensefree-no-credit, credit-required or personal-only.
tagA single tag, e.g. neon.
sortnew (default), downloads, likes, or trending (downloads in the last 7 days).
pagePage number, starting at 1.
per_pageResults per page, 1 to 100. Default 24.

Example request

curl "https://www.assetary.net/api/v1/creators/Radin/assets?sort=downloads"

Example response

{ "data": [ ... ], "pagination": { "page": 1, "per_page": 24, "total": 5, "total_pages": 1 } }

GET/api/v1/categories

Every category with its accepted file formats and number of published assets.

Example request

curl "https://www.assetary.net/api/v1/categories"

Example response

{
  "data": [
    { "slug": "hdris", "name": "HDRIs", "description": "Environment lighting maps",
      "file_formats": ["hdr", "exr"], "asset_count": 3 },
    ...
  ]
}

Errors

Every error uses the same shape, with an HTTP status to match.

{ "error": { "code": "not_found", "message": "No published asset with that ID." } }
400bad_requestA parameter is invalid (unknown category, per_page over 100...).
404not_foundNo published asset or creator matches.
405method_not_allowedOnly GET (and OPTIONS) are supported.
429rate_limitedToo many requests; wait for Retry-After seconds.
500internal_errorSomething went wrong on our side.

Questions or ideas for the API? Post them on the requests board.