クイックスタート
APIキーから3Dモデルのダウンロードまで、4ステップで。以下のスニペットはすべてcurl・Python・JavaScriptでコピーしてそのまま貼り付けられます。上部バーで言語を選択してください。
Base URLhttps://api.picoberry.ai
認証Bearer / x-api-key
形式JSON · { success, data }
1. APIキーを発行する
このAPIは有料のお客様にご利用いただけます。有効なサブスクリプション、または最低1回のクレジット購入完了が必要です。アカウント → APIキーを開いてキーを作成し、コピーしてください。シークレットは一度だけ表示されます。詳しくは認証ページをご覧ください。
セットアップ
export PB_KEY="pb_live_xxxxxxxxxxxx"
export BASE="https://api.picoberry.ai"import requests, time
BASE = "https://api.picoberry.ai"
headers = {"Authorization": "Bearer pb_live_xxxxxxxxxxxx"}const BASE = "https://api.picoberry.ai";
const headers = { Authorization: "Bearer pb_live_xxxxxxxxxxxx" };キーはサーバー側で保管
pb_live_キーはクレジット残高をすべて使い切る可能性があります。クライアントコードに含めたり、リポジトリにコミットしたりしないでください。2. 生成を開始する
テキストから3Dのジョブを開始します。この呼び出しはアセットのidとtaskStatus: 0を返してすぐに戻ります。生成はバックグラウンドで実行されます。画像もPOST /v1/imagesを使って同じ方法で動作します。
リクエスト
curl -X POST $BASE/v1/models/from-text \
-H "Authorization: Bearer $PB_KEY" -H "Content-Type: application/json" \
-d '{"prompt":"a stylized treasure chest, low-poly","engine":"tripo"}'r = requests.post(f"{BASE}/v1/models/from-text", headers=headers,
json={"prompt": "a stylized treasure chest, low-poly", "engine": "tripo"})
asset_id = r.json()["data"]["id"]const r = await fetch(`${BASE}/v1/models/from-text`, { method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ prompt: "a stylized treasure chest, low-poly", engine: "tripo" }) });
const assetId = (await r.json()).data.id;レスポンス · 200
{ "success": true, "data": { "id": "019f3a39-…", "taskStatus": 0, "type": "model_3d" } }3. 完了までポーリングする
生成は非同期で行われます。taskStatusが2に達するまでGET /v1/assets/{id}をポーリングしてください。3Dジョブは通常約60〜120秒、画像は数秒かかります。成功するとfiles.modelに署名付きのGLB URLが入ります。
0 待機中1 処理中2 成功3 失敗
ポーリング
# set ASSET_ID from the response above, then repeat until .data.taskStatus is 2
curl $BASE/v1/assets/$ASSET_ID -H "Authorization: Bearer $PB_KEY"while True:
a = requests.get(f"{BASE}/v1/assets/{asset_id}", headers=headers).json()["data"]
if a["taskStatus"] in (2, 3): break
time.sleep(4)
model_url = a["files"]["model"]let a;
do {
a = (await (await fetch(`${BASE}/v1/assets/${assetId}`, { headers })).json()).data;
if (a.taskStatus < 2) await new Promise(res => setTimeout(res, 4000));
} while (a.taskStatus < 2);
const modelUrl = a.files.model;4. モデルをダウンロードする
files.modelはそのまま使えるGLBです。特定の形式(FBX/OBJ、またはUnityですぐ使えるテクスチャ分割)が必要な場合は、エクスポートして新しい署名付きダウンロードURLを取得してください。
リクエスト
curl -X POST $BASE/v1/assets/$ASSET_ID/download \
-H "Authorization: Bearer $PB_KEY" -H "Content-Type: application/json" \
-d '{"format":"glb"}'d = requests.post(f"{BASE}/v1/assets/{asset_id}/download", headers=headers,
json={"format": "glb"}).json()["data"]
download_url = d["url"]const d = (await (await fetch(`${BASE}/v1/assets/${assetId}/download`, { method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ format: "glb" }) })).json()).data;
const downloadUrl = d.url;レスポンス · 200
{ "success": true, "data": { "url": "https://…signed", "format": "glb", "filename": "model.glb" } }fbx / objはZIPバンドルです
glbは単一ファイルですが、fbxとobjは.zip(モデル+テクスチャ)で返されます。すべてのオプション(Unityプリセット、カスタムファイル名)はダウンロードとエクスポートページにあります。次のステップ
これで一連の流れは完了です。キー → 生成 → ポーリング → ダウンロード。ここから先は: