Agent skill

Poly Pizza API

by jasonkneen in jasonkneen/tiny-world-builder

A skill your agent uses whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API.

AGPL-3.0Auto-check passedGame Development

Install Poly Pizza API

skills CLI
$ npx skills add jasonkneen/tiny-world-builder --skill poly-pizza-api -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jasonkneen/tiny-world-builder poly-pizza-api --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/poly-pizza-api .claude/skills/poly-pizza-api && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
poly-pizza-api
GitHub stars
1.6k
Token cost
~1.9k tokens
SKILL.md length
496 words
Files
1
Skills in repo
29
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API.

  • Works in 2 steps: GET /search/{keyword}?limit=5 → Pick the result with the lowest…
  • An LLM agent needs to search
  • SKILL.md covers Authentication, Base URL, Endpoints and Downloading a model, plus 5 more sections
  • Reaches api.poly.pizza and poly.pizza; needs POLY_PIZZA_KEY

What it does

Poly Pizza API is an agent skill from jasonkneen/tiny-world-builder. Use this skill whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API. Triggers on any task involving: finding free low-poly 3D models, searching the Poly Pizza catalogue, fetching model metadata or download URLs, retrieving popular models, or downloading .glb files from Poly Pizza. Use this skill proactively whenever the agent needs to obtain 3D assets programmatically, even if the user just says "find me a 3D model of X" without mentioning Poly…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Game Development, covering 3D graphics and WebGL, Game assets and audio and REST APIs. The licence is AGPL-3.0.

When your agent uses it

  • An LLM agent needs to search
  • Download 3D models from Poly Pizza (poly.pizza) using their REST API
  • Any task involving: finding free low-poly 3D models
  • Searching the Poly Pizza catalogue

Example prompts

  • “find me a 3D model of X”
  • “/poly-pizza-api”

Requirements

  • Python 3
  • A credential in POLY_PIZZA_KEY

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. GET /search/{keyword}?limit=5
  2. Pick the result with the lowest TriangleCount that still looks appropriate, or the

What it can do on your machine

Read from SKILL.md and the folder at commit a2a1129. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are http, python and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.poly.pizza
    • poly.pizza

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • POLY_PIZZA_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Poly Pizza API loads about 1.9k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 496 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~136
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jasonkneen/tiny-world-builder at commit a2a1129, republished under its AGPL-3.0 licence (© jasonkneen). 496 words, ~1,850 tokens.

Download SKILL.mdSave it as .claude/skills/poly-pizza-api/SKILL.md (or your agent's skills folder).
name
poly-pizza-api
description
Use this skill whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API. Triggers on any task involving: finding free low-poly 3D models, searching the Poly Pizza catalogue, fetching model metadata or download URLs, retrieving popular models, or downloading .glb files from Poly Pizza. Use this skill proactively whenever the agent needs to obtain 3D assets programmatically, even if the user just says "find me a 3D model of X" without mentioning Poly Pizza by name.

Poly Pizza API v1.1

Poly Pizza (https://poly.pizza) hosts 10,000+ free low-poly CC0 and CC-BY 3D models. The API lets agents search, filter, and download them programmatically.

Authentication

All requests require an API key obtained from https://poly.pizza/settings/api (requires a free account). In this environment, the key is available as the POLY_PIZZA_KEY environment variable. Pass it as a header:

X-Auth-Token: <your_api_key>

The key must be present on every request. There is no OAuth flow — it's a static token.

Base URL

https://api.poly.pizza/v1/

All endpoints below are relative to this base.

Endpoints

Search models
GET /search/{query}

Returns models matching the keyword. URL-encode the query string.

Query parameters:

ParamTypeDefaultDescription
limitinteger12Max results to return (max ~50)
cursorstring—Pagination cursor from a previous response
formatstring"glb"File format filter (glb, fbx, obj)
animatedboolean—Filter to only animated models
tricountstring—Triangle count range, e.g. "0-5000"

Example:

http
GET https://api.poly.pizza/v1/search/tree?limit=5
X-Auth-Token: your_key_here

Response shape:

json
{
  "cursor": "some_cursor_string_or_null",
  "results": [
    {
      "ID": "5EGWBMpuXq",
      "Title": "Oak Tree",
      "Description": "A simple low poly oak tree",
      "Creator": {
        "Username": "someartist",
        "PURL": "https://poly.pizza/u/someartist"
      },
      "Thumbnail": "https://...jpg",
      "Download": "https://...glb",
      "DownloadFBX": "https://...fbx",
      "Licence": "CC-BY 4.0",
      "Tags": ["nature", "tree", "foliage"],
      "TriangleCount": 320,
      "Animated": false,
      "PublishedAt": "2021-08-15T04:32:11.000Z"
    }
    // ... more results
  ]
}

GET /popular

Returns the most popular / trending models on the site.

Query parameters: same as search (limit, cursor, format, animated, tricount)

Example:

http
GET https://api.poly.pizza/v1/popular?limit=10
X-Auth-Token: your_key_here

Response shape is identical to search.


Get model by ID
GET /model/{id}

Returns full metadata for a single model by its unique ID.

Example:

http
GET https://api.poly.pizza/v1/model/5EGWBMpuXq
X-Auth-Token: your_key_here

Response is a single model object (same shape as an entry in results above).


Downloading a model

The Download field in the response is a direct CDN URL to the .glb file. To download it, perform a plain GET request — no auth header required on the CDN URL itself.

python
import requests

# First, search for the model
headers = {"X-Auth-Token": api_key}
resp = requests.get("https://api.poly.pizza/v1/search/chair", headers=headers, params={"limit": 1})
model = resp.json()["results"][0]

# Then download the .glb directly
glb_bytes = requests.get(model["Download"]).content
with open(f"{model['Title']}.glb", "wb") as f:
    f.write(glb_bytes)

Licenses and attribution

LicenseRequirements
CC0No attribution required — public domain
CC-BY 4.0Must credit the creator. Format: "[Title]" by [Username] (poly.pizza) CC-BY 4.0

Always check model.Licence and record credits for CC-BY models. A minimal attribution line looks like:

"Oak Tree" by someartist (https://poly.pizza/u/someartist) CC-BY 4.0

Pagination

Responses include a cursor field. If it's non-null, there are more results. Pass it as ?cursor=<value> on the next request (keep all other params the same).

python
results = []
cursor = None
while True:
    params = {"limit": 24}
    if cursor:
        params["cursor"] = cursor
    data = requests.get(url, headers=headers, params=params).json()
    results.extend(data["results"])
    cursor = data.get("cursor")
    if not cursor:
        break

Show full SKILL.md (191 more words)Show less

Error handling

StatusMeaning
200OK
401Missing or invalid API key
404Model ID not found
429Rate limit exceeded — back off
500Server error — retry

On 429, wait at least 1 second before retrying. The API has no documented rate limit ceiling; hobbyist use is free, commercial use is pay-as-you-go.


Common patterns

Find best match for a keyword
  1. GET /search/{keyword}?limit=5
  2. Pick the result with the lowest TriangleCount that still looks appropriate, or the first result if the task doesn't specify poly count.
Batch fetch for a scene

Identify all needed asset types (e.g. "tree, rock, house, car"), then fire parallel search requests for each keyword. Collect the top result per keyword.

Download and save with attribution
python
import requests, os

def fetch_model(api_key: str, keyword: str, out_dir: str) -> dict:
    headers = {"X-Auth-Token": api_key}
    r = requests.get(
        f"https://api.poly.pizza/v1/search/{keyword}",
        headers=headers,
        params={"limit": 1}
    )
    r.raise_for_status()
    results = r.json().get("results", [])
    if not results:
        raise ValueError(f"No models found for '{keyword}'")
    
    model = results[0]
    glb = requests.get(model["Download"])
    glb.raise_for_status()
    
    safe_name = model["Title"].replace(" ", "_")
    path = os.path.join(out_dir, f"{safe_name}.glb")
    with open(path, "wb") as f:
        f.write(glb.content)
    
    attribution = None
    if "CC-BY" in model.get("Licence", ""):
        attribution = (
            f'"{model["Title"]}" by {model["Creator"]["Username"]} '
            f'({model["Creator"]["PURL"]}) {model["Licence"]}'
        )
    
    return {"path": path, "model": model, "attribution": attribution}

Notes

  • Models are .glb (GLTF binary) by default, directly usable in Three.js, Babylon.js, Unity (with glTFast), Unreal, Godot, and most AR/VR frameworks.
  • DownloadFBX is available on some models for Unity's native importer.
  • The Thumbnail URL is a JPEG preview image, useful for showing a preview before downloading.
  • Model IDs are stable — safe to cache and reference by ID later.
  • The API key is obtained from https://poly.pizza/settings/api after creating a free account.

© jasonkneen, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/poly-pizza-api of jasonkneen/tiny-world-builder.

Open the folder on GitHubat commit a2a1129

Compare with similar skills

Poly Pizza API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Poly Pizza API compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Poly Pizza API this skilljasonkneen/tiny-world-builder1.6k—~1.9kAutomated safety check: PassAGPL-3.0
Game Asset Generatorhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
Threejs 3D Generatorvalkor-ai/loom1.2k1 repos~2.6kAutomated safety check: PassApache-2.0
Asset Pipelinerehan-remade/universal-modder5.8k—~2kAutomated safety check: PassMIT
Blender Image To 3Dmajidmanzarpour/blender-game-skills135—~5.7kAutomated safety check: PassMIT
Text To 3D AssetLaurentiuGabriel/unreal-game-assets-creation-skill148—~2.1kAutomated safety check: PassNone

Similar skills

  • Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

    7.1k GitHub stars~2.8k tokensUpdated 7 days ago
    Game DevelopmentAuto-check passed
  • Threejs 3D Generator

    valkor-ai/loom

    Generate, texture, rig, animate, stylize, convert, and download 3D assets for Three.js games via the Tripo API.

    1.2k GitHub starsUsed in 1 repo~2.6k tokens
    Game DevelopmentAuto-check passed
  • Asset Pipeline

    rehan-remade/universal-modder

    Turn generated or hand-made art into exactly what a game engine loads.

    5.8k GitHub stars~2k tokensUpdated today
    Game DevelopmentAuto-check passed
  • Blender Image To 3D

    majidmanzarpour/blender-game-skills

    Build a game-ready 3D asset in Blender from reference images (concept art, photos, turnarounds, sketches, screenshots) for any category, including characters, creatures, architecture, vehicles…

    135 GitHub stars~5.7k tokensUpdated 15 days ago
    Game DevelopmentAuto-check passed
  • Text To 3D Asset

    LaurentiuGabriel/unreal-game-assets-creation-skill

    Generate a game-ready 3D asset by running the local AI pipeline sequentially: Fooocus (SDXL text-to-image) - Hunyuan3D-2 (image-to-textured-GLB) - optional Blender FBX convert + Unreal import.

    148 GitHub stars~2.1k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Game Asset Generator

    notque/vexjoy-agent

    Deterministic palette/matrix pixel art (not AI). An agent skill from notque/vexjoy-agent.

    439 GitHub stars~2.3k tokensUpdated 6 days ago
    Game DevelopmentAuto-check: notes

More from jasonkneen/tiny-world-builder

All 29 skills in this repo
  • Lightweight 3D Effects

    jasonkneen/tiny-world-builder

    Lightweight 3D effects for decorative elements and micro-interactions using Zdog, Vanta.js, and Vanilla-Tilt.js.

    1.6k GitHub starsUsed in 1 repo~5.7k tokens
    Auto-check passed
  • Threejs Primitive Reconstructor

    jasonkneen/tiny-world-builder

    create robust, browser-runnable three.js primitive reconstructions from static low-poly, voxel, isometric, or stylized game-art reference images.

    1.6k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Tinyworld Block Button Style

    jasonkneen/tiny-world-builder

    A skill your agent uses when styling any tool/block button, palette tile, icon chip, or new clickable square in Tiny World Builder.

    1.6k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Tinyworld Ghost World Gen

    jasonkneen/tiny-world-builder

    A skill your agent uses when changing ghost board generation, path / road / river continuity, deterministic regen, edge connections, or anything that runs inside makeGhostWorld in…

    1.6k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Tinyworld Island And Planes

    jasonkneen/tiny-world-builder

    A skill your agent uses when changing the home island layout, edge dressing, undersides, autoincentive sponsor banner (now a top-left logo-adjacent DOM banner), plane/crop-duster flight paths…

    1.6k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • 3D Modeling

    jasonkneen/tiny-world-builder

    Expert 3D modeling specialist with deep knowledge of topology, UV mapping, game-ready and film-ready pipelines, DCC tool workflows (Blender, Maya, ZBrush, 3ds Max, Houdini), retopology, LOD systems…

    1.6k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed

Questions about Poly Pizza API

What does Poly Pizza API do?

A skill your agent uses whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API. Poly Pizza API is an agent skill from jasonkneen/tiny-world-builder.pizza) using their REST API.

When should I use Poly Pizza API?

Poly Pizza API fits situations like: an LLM agent needs to search; download 3D models from Poly Pizza (poly.pizza) using their REST API; any task involving: finding free low-poly 3D models; searching the Poly Pizza catalogue.

How do I install Poly Pizza API in Claude Code?

Run `npx skills add jasonkneen/tiny-world-builder --skill poly-pizza-api -a claude-code`. Or copy the skill folder (.agents/skills/poly-pizza-api in jasonkneen/tiny-world-builder) into .claude/skills/poly-pizza-api in your project. Claude Code loads it when a task matches its description.

How do I install Poly Pizza API in Codex?

Run `npx skills add jasonkneen/tiny-world-builder --skill poly-pizza-api -a codex`. Or copy the skill folder (.agents/skills/poly-pizza-api in jasonkneen/tiny-world-builder) into .agents/skills/poly-pizza-api in your project. Codex loads it when a task matches its description.

Can I use Poly Pizza API in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jasonkneen/tiny-world-builder --skill poly-pizza-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/poly-pizza-api, .gemini/skills/poly-pizza-api, .github/skills/poly-pizza-api and .opencode/skills/poly-pizza-api in your project.

What does Poly Pizza API need to run?

Going by SKILL.md and its folder, Poly Pizza API needs credentials named POLY_PIZZA_KEY. Our summary lists: Python 3; A credential in POLY_PIZZA_KEY.

Does Poly Pizza API access the network?

SKILL.md names 2 domains. In commands or code: api.poly.pizza and poly.pizza; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Poly Pizza API safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Poly Pizza API use?

Poly Pizza API is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Poly Pizza API use?

About 1.9k tokens (SKILL.md is roughly 7.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Poly Pizza API?

Skills that share tags, products or a category with Poly Pizza API: Game Asset Generator (htdt/godogen, 7.1k stars), Threejs 3D Generator (valkor-ai/loom, 1.2k stars), Asset Pipeline (rehan-remade/universal-modder, 5.8k stars) and Blender Image To 3D (majidmanzarpour/blender-game-skills, 135 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Poly Pizza API?

jasonkneen (a GitHub user) maintains it in jasonkneen/tiny-world-builder, which has 1,590 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 9, 2026.

Source: jasonkneen/tiny-world-builder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.