Lewati ke konten

Bantuan

Markdown

Error dan batas laju

Error datang sebagai JSON dengan kode error yang stabil dan message yang ditulis untuk manusia:

{ "error": "auth_required", "message": "This tool needs a TerraLab account. Connect TerraLab in your assistant's settings; see https://terra-lab.ai/mcp." }

Cabangkan logika pada error, jangan pernah pada message: kata-katanya bisa berubah.

Error HTTP

StatuserrorArtiYang perlu dilakukan
400invalid_inputBody bukan objek JSON berisi argumen tool.Perbaiki body permintaan.
400bad_requestPermintaan tidak bisa dibaca.Periksa JSON dan header.
401auth_requiredTidak ada kunci atau token yang dikirim.Kirim Authorization: Bearer <key>.
401invalid_tokenKunci atau token tidak valid, dicabut, atau kedaluwarsa.Buat kunci baru, atau biarkan agen masuk lagi.
401access_revokedAplikasi diputuskan dari dashboard.Hubungkan agen kembali.
402balance_requiredPanggilan gratis bulan ini habis, atau operasinya berbayar, dan saldo kosong.Tambah saldo; jawabannya memuat hint dan account_url.
404not_foundPath API itu tidak ada.Periksa URL.
404unknown_toolTidak ada tool dengan nama itu.Daftar tool dengan GET /v1/tools.
405method_not_allowedTool dipanggil dengan POST.Pakai POST.
413too_largeBody permintaan terlalu besar.Kirim file yang lebih kecil atau fitur yang lebih sedikit.
429rate_limitedTerlalu banyak permintaan dalam satu menit terakhir.Tunggu sebanyak Retry-After detik, lalu coba lagi.
429daily_limitAkun mencapai batas pengaman hariannya.Coba lagi besok (UTC) atau tulis ke dukungan.
503unavailableLayanan akun tidak menjawab.Coba lagi setelah Retry-After detik.

Error tool

Tool yang berjalan tetapi tidak bisa menjawab mengembalikan 200 dengan isError: true. structuredContent-nya lalu memuat code, message, dan, pada umumnya, hint yang menjelaskan apa yang perlu diubah: tempat yang tidak ditemukan, area yang terlalu besar, negara yang tidak tercakup.

{
  "structuredContent": { "code": "...", "message": "...", "hint": "..." },
  "content": [{ "type": "text", "text": "..." }],
  "isError": true
}

Apa yang dihitung

Panggilan yang gagal atau tidak menemukan apa pun tidak dihitung: panggilan gratis atau jumlah yang diambil dari saldo dikembalikan. Hanya jawaban yang berisi hasil yang dihitung.

Batas laju

Setiap akun dapat melakukan 60 panggilan per menit. Melewatinya, API menjawab 429 dengan Retry-After: 60. Sebarkan pekerjaan batch sepanjang waktu, dan coba lagi dengan jeda yang bertambah:

import time
import requests

def call(url, headers, body, attempts=5):
    for attempt in range(attempts):
        response = requests.post(url, headers=headers, json=body, timeout=120)
        if response.status_code not in (429, 503):
            return response
        time.sleep(int(response.headers.get("Retry-After", 2 ** attempt)))
    return response

Coba lagi hanya untuk 429 dan 503. 401 atau 402 tidak akan lolos pada percobaan kedua.

Diperbarui 2026-10-27