VGGT-1B
Integrasikan
vggt-1b
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/vggt-1b?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/vggt-1b?wait=20", {
method: "POST",
headers,
body: JSON.stringify({}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/vggt-1b", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/id/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "vggt-1b",
"input": {}
}
Panggil model VGGT-1B (vggt-1b) melalui Doitong API. Dokumentasi untuk agen: https://doitong.com/id/developers/models/vggt-1b.md
POST https://api.doitong.com/v1/run/vggt-1b?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{}
Jika status respons adalah "queued" atau "running", lakukan polling GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 hingga statusnya menjadi "succeeded"; file terdapat di outputs[].url. POST https://api.doitong.com/v1/quote/vggt-1b dengan body yang sama mengembalikan harga pasti sebelum dijalankan.
Hingga $1,755 per eksekusi ditagih berdasarkan penggunaan aktual, sisanya dikembalikan Jalankan di halaman ini
Kunci API baru Anda. Ini hanya ditampilkan sekarang dan sudah dimasukkan ke dalam kode serta kolom kunci API di bawah. Simpan secara rahasia: jangan pernah menaruhnya di kode yang berjalan di browser.
Hasil pertama Anda akan muncul di sini
Buat permintaan di bawah ini dan jalankan dengan kunci API Anda. Output disalin ke penyimpanan kami, disimpan selamanya atau 7 hari gratis.
Buat permintaan
Kontrol dibuat dari skema model. Kode dan harga diperbarui saat Anda mengubahnya.
/run/vggt-1b?wait=20
estimasi harga → $1,755
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/vggt-1b?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/vggt-1b?wait=20", {
method: "POST",
headers,
body: JSON.stringify({}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/vggt-1b", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "vggt-1b",
"input": {},
"wait_seconds": 20
}
}
}
Jalankan permintaan ini
Key Anda tetap berada di browser ini: key hanya dikirim ke Doitong API dan disimpan (localStorage) hanya jika Anda mencentang Ingat. Dapatkan kunci API
Tentang VGGT-1B
Memperkirakan geometri dari beberapa tampilan. Berikan hingga 48 gambar dalam `image_urls`, dan secara opsional tambahkan `video_url` yang diambil sampelnya setiap `frame_sampling_rate` bingkai. Model ini mengembalikan peta kedalaman per bingkai, ekstrinsik dan intrinsik kamera, file prediksi mentah, serta point cloud GLB dengan kerucut kamera. `confidence_percentile` dan `max_points` mengatur kepadatan point cloud.
Parameter
Kirim nama kanonis atau nama asli, bukan keduanya. Nama kanonis
image_urlsopsional
images
video_urlopsional
video
frame_sampling_rateopsional
alpha_blend_ontoopsional
export_prediction_dataopsional
export_depth_mapsopsional
export_point_cloudopsional
array_encodingopsional
exclude_keysopsional
confidence_percentileopsional
max_pointsopsional
enable_safety_checkeropsional
Parameter file menerima URL publik https://, URI data: hingga 10 MB, atau file_url dari unggahan. File
Output
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "vggt-1b",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 1755,
"usd": "1.755",
"charged": 1755,
"refunded": 0
},
"input": {},
"output": {
"point_cloud": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"depth_maps": [
{
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200,
"width": 1024,
"height": 768
}
],
"prediction_data": [
{
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
}
],
"num_frames": 1,
"depth_range": [
1.0
],
"extrinsics": [
[
[
1.0
]
]
],
"intrinsics": [
[
[
1.0
]
]
],
"timings": {}
},
"outputs": [
{
"type": "file",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Field output
- point_cloud
- object {url, content_type, file_name, file_size} | nullEkspor point cloud yang dikembalikan saat `export_point_cloud` bernilai true; scene GLB-nya menggabungkan cloud gabungan dengan kerucut kamera.
- depth_maps
- array of object {url, content_type, file_name, file_size, width, height}Ekspor depth map yang tersedia saat `export_depth_maps` bernilai true. Entri mengikuti urutan bingkai sumber, dengan setiap bingkai direpresentasikan sebagai raster PNG grayscale pada kedalaman 16-bit.
- prediction_data
- array of object {url, content_type, file_name, file_size}Ekspor prediksi mentah: saat `export_prediction_data` bernilai true, setiap bingkai memiliki file JSON sendiri, dan file-file tersebut mengikuti urutan bingkai.
- num_frames
- integerTotal jumlah bingkai yang direkonstruksi, termasuk gambar dan bingkai yang diambil sampelnya dari video.
- depth_range
- array of numberBatas kedalaman [min, max] yang digunakan untuk kuantisasi `depth_maps`. Pulihkan kedalaman sebagai min + pixel * (max - min) / 65535.
- extrinsics
- array of array of array of numberMatriks ekstrinsik kamera-dari-dunia berukuran 3x4 untuk setiap bingkai; sumbu OpenCV mengarah ke kanan pada x, ke bawah pada y, dan ke depan pada z.
- intrinsics
- array of array of array of numberMatriks intrinsik pinhole berukuran 3x3 untuk setiap bingkai, dinyatakan dalam koordinat piksel bingkai model berukuran 518x518.
- timings
- objectWaktu berlalu pada jam dinding untuk setiap tahap, dalam detik.
Model lainnya: Visi
Untuk agen AI: halaman ini dalam Markdown tersedia di https://doitong.com/id/developers/models/vggt-1b.md. Semua model dan panduan: https://doitong.com/developers/llms.txt