開始使用
API 快速入門
涵蓋範圍: 在 /v1/data/* + /v2/* 中,有效金鑰取代瀏覽器的 ByteGuard 證明。仍會檢查到期、撤銷、訂閱、額度和速率限制,不會授權其他路由。openapi.json 和 products 是公開的。
API 金鑰與額度本頁內容
取得 API 金鑰
需要點數:有效的 Pro 帳戶每月包含的 20 點,或在帳戶頁面購買的點數。兩者都沒有的帳戶會收到 403 pro_required。
此金鑰僅顯示一次。請將其安全儲存在伺服器上。
使用 API 需要有效的 Pro 帳號。在帳號中建立 API 金鑰並複製,金鑰只會顯示一次。請將其作為機密 NOCALL_API_KEY 存放在伺服器上,切勿放入瀏覽器程式碼。
在帳戶建立 API 金鑰並複製僅顯示一次的值。將 NOCALL_API_KEY 設為伺服器機密。使用 HTTPS,不要在瀏覽器程式碼、儲存庫、截圖或日誌放入金鑰。
在 Authorization: Bearer 中傳送完整金鑰,Bearer 後留一個空格。不要使用 X-API-Key,也不要將金鑰放入 URL。
第一個請求
使用 Authorization: Bearer 標頭和包含 tool 與 phone 的 JSON 內容送出 POST /v2/tools,例如 who-calls。每次操作都使用新的 Idempotency-Key,以便重試時不會重複扣款。
全部 44 個 tools 都可透過 API 使用:呼叫 POST /v2/<tool-id>,或在主體中加上 tool 欄位並呼叫 POST /v2/tools。每個 tool 都有各自的 JSON 主體,詳見其指南。data.result 包含該 tool 的結果。請使用表格中的識別碼。
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/tools' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"tool":"who-calls","phone":"+12025550123","country":"US"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/tools',
method='POST',
data=json.dumps({'tool': 'who-calls', 'phone': '+12025550123', 'country': 'US'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/tools', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ tool: 'who-calls', phone: '+12025550123', country: 'US' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);回應
此範例為虛構內容,並非真實查詢。請勿撥打電話或開啟其中的連結。
data.result 包含結果,meta 包含 requestId、unitsCharged 和本期用量。API 參考文件說明了所有 tools 的欄位。
data 包含結果,meta 包含 requestId、unitsCharged 和用量。虛構片段顯示查詢後的餘額。有效但未找到資料的結果也消耗1額度;驗證錯誤、供應商錯誤和讀取餘額不收費。沒有資料不代表號碼安全。完整契約見 OpenAPI。
額度與錯誤
每個有效結果會消耗 1 個額度,即使沒有資料也一樣;驗證錯誤不收費。401 表示金鑰缺少或無效,403 表示沒有有效的 Pro,429 表示額度用盡或達到請求上限。
