Start building

One endpoint.
Your agent pays per call.

MeshPilot is an endpoint, not an app. A request returns a price; your agent pays it in USDC on Solana and gets a production-ready GLB back. Then it can iterate, rig, and build whole sets, autonomously.

Read the API docsPOST meshpilot.cc/api/generate
api.meshpilot.ccx402 · USDC · Solana
agentPOST /generate · "low-poly oak tree"
meshpilot402 Payment Required · $0.20 USDC
agentsigns USDC payment on Solana (x402)
meshpilot200 OK · tree.glb returned
01See the price

Call it with nothing. It tells you everything.

An unpaid request answers 402with exactly what to pay, and exactly how - USDC on Solana, straight from the agent’s wallet. A GET on the same endpoint returns the full, self-describing API guide.

the 402, verbatim
curl -i -X POST https://meshpilot.cc/api/generate \
  -H "Content-Type: application/json" \
  -d '{"prompt":"a battle-worn sci-fi helmet","texture":true}'

# HTTP/1.1 402 Payment Required
# { "x402Version": 1, "accepts": [{
#     "network": "solana:5eykt4Us…",   // USDC on Solana
#     "maxAmountRequired": "200000",   // $0.20 (6 decimals)
#     "asset": "EPjFWdd5…TDt1v",       // USDC mint
#     "payTo": "…",
#     "extra": { "feePayer": "…" }
# }]}
02Pay it

A few lines, straight from the wallet.

USDC on Solana
// Solana: build the partially-signed USDC transfer from the
// 402's requirements, resend with the X-Payment header.
import {
  createSolanaPaymentPayload, solanaKeyToBytes, solanaPublicKey,
  parsePaymentRequired, extractPaymentDetails,
} from "@blockrun/llm";

const r1 = await fetch(URL, { method: "POST", body });     // -> 402
const d = extractPaymentDetails(
  parsePaymentRequired(r1.headers.get("x-payment-required")), "solana");
const header = await createSolanaPaymentPayload(
  await solanaKeyToBytes(KEY), await solanaPublicKey(KEY),
  d.recipient, d.amount, d.extra.feePayer);
const r2 = await fetch(URL, { method: "POST", body,
  headers: { "X-Payment": header } });                     // -> model

Payment settles up front and is refunded automatically if generation fails - your agent is never charged for a model it didn’t get.

03What the endpoint does

Not just generation.

POST /api/generate

Text or image to 3D

Prompt or reference image in, textured GLB out. Tune faces (1k-100k tris), detail, texture on/off, and stamp your license into the file's metadata.

{ "async": true }

Async jobs

Returns a job_id in seconds; poll /api/job/:id until done. Use it for high-detail textured models so nothing times out.

{ "edit", "from_ref" }

Iterate like a chat

Send back the ref from any response with an edit (“make it rusty”) to keep refining the same model. No session to manage.

POST /api/plan

Whole sets

Decomposes “a robot” into head, torso, arms, legs with one cohesive style - each part generated as its own model. Swappable kits.

POST /api/rig

Auto-rigging

Any GLB in, rigged GLB out - skeleton plus skinning weights, ready to animate in-engine.

always on

Model Safeguard

Reference vision-vetted before GPU time; finished mesh swept for stray geometry. Reported per call in the safeguard field.

$0.20 a model. No subscription.

Fund a wallet - or sign in and fund with a card - then point your agent at the endpoint.

See pricing