{"openapi":"3.0.3","info":{"title":"CHA.LA IP Intelligence API","description":"## Quick start\n\nOne API for IP intelligence, network ownership, routing and threat evidence. Enable account access, then start with a single request.\n\n1. Create an account: Register, sign in to the API console and request access. Email accounts currently need manual approval; approval is not email verification.\n2. Get an API key: After approval, create a key or receive an account-bound key from the administrator. The full secret is displayed only once; store it securely.\n3. Call from your backend: Use X-API-Key or Authorization: Bearer. Never place keys in URLs, public repositories or frontend code.\n\n[API console](https://www.cha.la/en/console)\n\n## Free allowance & paid periods\n\nFree accounts receive 1,000 units per day, resetting at midnight UTC. All keys and website batches share the balance; replacing or revoking a key does not reset usage.\n\n|Plan|Daily safety cap|Requests/min/key|Active keys|Targets/batch|\n|---|---:|---:|---:|---:|\n|Free|1,000|30|2|100|\n|Developer|10,000|120|5|500|\n|Pro|100,000|600|20|2,000|\n|Enterprise|1,000,000|3,000|100|5,000|\n\nPaid periods are provisioned manually with a plan, explicit total allowance and expiry. Period allowance is not the daily cap multiplied by days. Online checkout and automatic renewal are not enabled. Expiry returns the account to Free; existing key scopes never expand automatically. Legacy organization contracts and lower per-key limits also apply.\n\n## How usage is counted\n\nSuccessful synchronous lookups cost one unit; batch status/results reads, failures, denials and rejected rate-limited requests cost zero.\n\nBatches: accepted deduplicated targets are charged once; later target failures are not refunded. Idempotency-Key is required; replaying the same request with the same identifier does not charge again.\n\nWebsite batch progress and downloads do not incur additional units. For 429 / 503, honor Retry-After when present and use exponential backoff.\n\n## Availability\n\nUse /api/public/v1 for customer integrations. /api/v1 is a website-internal interface, not the customer contract. External browser CORS is not enabled; call from your backend.\n\nReverse-IP source: not configured; unavailable.\n\nC2 distribution: not enabled.\n\nRPKI uses snapshots. Check observedAt, expiresAt, stale and riskStatus. Unknown or missing evidence does not mean safe. /api/capabilities is the source of current capability status.","version":"0.6.0"},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{}},"paths":{"/api/public/v1/batch/ip":{"post":{"operationId":"_batch_ip","summary":"Create idempotent IP batch","tags":["Public API","Batch Intelligence"],"description":"Idempotency-Key is required. The same key and normalized target list returns the original job without charging again; changed input or an expired job returns 409. Accepted deduplicated targets are charged once, including targets that later fail. Jobs are retained for 7 days.\n\nMinimum plan: free. Required scopes: batch:write, ip:read. Authenticate using X-API-Key or Authorization: Bearer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targets":{"type":"array","items":{"type":"string"},"description":"Array of IPs or hostnames; the target limit depends on your plan."}},"required":["targets"]}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"in":"header","name":"Idempotency-Key","required":true,"description":"Unique batch identifier retained for the job lifetime; reuse it when retrying the same request."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:write","ip:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Display label; ISP-hosted IP is an ISP-owned hosting subtype, not a residential/static guarantee."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Stable usage code, e.g. isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Check this before interpreting risk. not_observed/unknown is not a clean bill of health."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"IP intelligence; additional evidence fields may be added compatibly.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"202":{"description":"Batch accepted; targets charged atomically.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Display label; ISP-hosted IP is an ISP-owned hosting subtype, not a residential/static guarantee."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Stable usage code, e.g. isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Check this before interpreting risk. not_observed/unknown is not a clean bill of health."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"IP intelligence; additional evidence fields may be added compatibly.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Batch accepted; targets charged atomically."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/batch/jobs/{id}":{"get":{"operationId":"_batch_jobs__id","summary":"Batch job status","tags":["Public API","Batch Intelligence"],"description":"Only the same API client can read this job. Status reads do not consume query units; avoid rapid polling.\n\nMinimum plan: free. Required scopes: batch:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:read"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Batch job ID, accessible only to the same API client."}],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Display label; ISP-hosted IP is an ISP-owned hosting subtype, not a residential/static guarantee."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Stable usage code, e.g. isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Check this before interpreting risk. not_observed/unknown is not a clean bill of health."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"IP intelligence; additional evidence fields may be added compatibly.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/batch/jobs/{id}/results":{"get":{"operationId":"_batch_jobs__id_results","summary":"Export batch results","tags":["Public API","Batch Intelligence"],"description":"Only the same API client can export this job. Result reads do not consume query units; JSON and CSV are supported.\n\nMinimum plan: free. Required scopes: batch:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string","enum":["json","csv"],"default":"json"},"in":"query","name":"format","required":false,"description":"Export format."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Batch job ID, accessible only to the same API client."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:read"],"responses":{"200":{"description":"JSON report or CSV export.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Display label; ISP-hosted IP is an ISP-owned hosting subtype, not a residential/static guarantee."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Stable usage code, e.g. isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Check this before interpreting risk. not_observed/unknown is not a clean bill of health."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"IP intelligence; additional evidence fields may be added compatibly.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/asn/{asn}":{"get":{"operationId":"_asn__asn","summary":"ASN intelligence","tags":["Public API"],"description":"Large networks may return large snapshots. Cache responses and check stale and expiry metadata.\n\nMinimum plan: free. Required scopes: asn:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["asn:read"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"asn","required":true,"description":"Autonomous system number, e.g. AS13335."}],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"asn":{"type":"integer"},"name":{"type":"string"},"organization":{"type":"string"},"prefixes":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"ipVersion":{"type":"integer"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"bgp"}},"/api/public/v1/bgp/prefix":{"get":{"operationId":"_bgp_prefix","summary":"BGP prefix","tags":["Public API"],"description":"Returns BGP prefix statistics and visibility for a time window.\n\nMinimum plan: developer. Required scopes: bgp:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"prefix","required":true,"description":"IPv4 / IPv6 CIDR, e.g. 1.1.1.0/24."},{"schema":{"type":"integer","minimum":1,"maximum":744,"default":168},"in":"query","name":"hours","required":false,"description":"Lookback window in hours."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"prefix":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"windowStart":{"type":"string","format":"date-time","nullable":true},"prefix":{"type":"string"},"announcementCount":{"type":"integer"},"withdrawalCount":{"type":"integer"},"visibleCollectors":{"type":"integer"},"visiblePeers":{"type":"integer"},"originAsns":{"type":"array","items":{"type":"integer"}},"lastObserved":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/bgp/history":{"get":{"operationId":"_bgp_history","summary":"BGP history","tags":["Public API","BGP Intelligence"],"description":"Returns observed route events. Missing observations do not prove that no changes occurred.\n\nMinimum plan: developer. Required scopes: bgp:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"prefix","required":true,"description":"IPv4 / IPv6 CIDR, e.g. 1.1.1.0/24."},{"schema":{"type":"integer","minimum":1,"maximum":744,"default":744},"in":"query","name":"hours","required":false,"description":"Lookback window in hours."},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"in":"query","name":"limit","required":false,"description":"Page size or maximum number of returned records."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"prefix":{"type":"string"},"observed":{"type":"boolean"},"windowHours":{"type":"integer"},"events":{"type":"array","items":{"type":"object","properties":{"eventType":{"type":"string"},"prefix":{"type":"string"},"originAsn":{"type":"integer"},"observedAt":{"type":"string","format":"date-time"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/bgp/asn/{asn}/edges":{"get":{"operationId":"_bgp_asn__asn_edges","summary":"ASN edges","tags":["Public API"],"description":"Returns observed neighboring ASNs and relationships.\n\nMinimum plan: developer. Required scopes: bgp:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":365,"default":31},"in":"query","name":"days","required":false,"description":"Lookback window in days."},{"schema":{"type":"string"},"in":"path","name":"asn","required":true,"description":"Autonomous system number, e.g. AS13335."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"asn":{"type":"integer"},"edges":{"type":"array","items":{"type":"object","properties":{"neighbourAsn":{"type":"integer"},"relationship":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/ip/{target}":{"get":{"operationId":"_ip__target","summary":"IP intelligence","tags":["Public API"],"description":"Returns IP ownership, usage classification and risk evidence. Check riskStatus and evidence timestamps; unknown does not mean safe.\n\nMinimum plan: free. Required scopes: ip:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 or hostname."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["ip:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Display label; ISP-hosted IP is an ISP-owned hosting subtype, not a residential/static guarantee."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Stable usage code, e.g. isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Check this before interpreting risk. not_observed/unknown is not a clean bill of health."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"IP intelligence; additional evidence fields may be added compatibly."},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"ip"}},"/api/public/v1/ip/{target}/segment":{"get":{"operationId":"_ip__target_segment","summary":"IP segment","tags":["Public API"],"description":"Looks up the IP segment profile. Prefix-level evidence is not a direct observation of the individual IP.\n\nMinimum plan: developer. Required scopes: history:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 or hostname."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["history:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"profile":{"type":"object","properties":{"prefix":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/ip/{target}/history":{"get":{"operationId":"_ip__target_history","summary":"IP history","tags":["Public API"],"description":"Returns collected ASN, organization, location and registration changes, not an exhaustive history.\n\nMinimum plan: developer. Required scopes: history:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 or hostname."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["history:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"asn":{"type":"array","items":{"type":"object","properties":{"asn":{"type":"integer"}},"additionalProperties":true}},"organization":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"}},"additionalProperties":true}},"location":{"type":"array","items":{"type":"object","properties":{"location":{"type":"string"}},"additionalProperties":true}},"registration":{"type":"array","items":{"type":"object","properties":{"cidr":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/privacy-network":{"get":{"operationId":"_privacy_network","summary":"Privacy networks","tags":["Public API","IP Intelligence"],"description":"Returns privacy-network and network-attribute evidence, including proxy, VPN and Tor signals. Check status, confidence and freshness together.\n\nMinimum plan: developer. Required scopes: privacy:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IPv4, IPv6 or hostname."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["privacy:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"ipType":{"type":"string"},"privacy":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"status":{"type":"string"},"confidence":{"type":"number","nullable":true},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"network":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"status":{"type":"string"},"confidence":{"type":"number","nullable":true}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/threat/ip":{"get":{"operationId":"_threat_ip","summary":"IP threat evidence","tags":["Public API","Threat Intelligence"],"description":"not_observed means no matching evidence in covered sources, not a guarantee that an IP is safe.\n\nMinimum plan: developer. Required scopes: threat:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IPv4 or IPv6 address."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"status":{"type":"string"},"riskScore":{"type":"number","nullable":true},"confidence":{"type":"number","nullable":true},"publicMatches":{"type":"array","items":{"type":"object","properties":{"sourceKey":{"type":"string"}},"additionalProperties":true}},"sources":{"type":"array","items":{"type":"object","properties":{"sourceKey":{"type":"string"},"fresh":{"type":"boolean"},"matched":{"type":"boolean"},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"threat"}},"/api/public/v1/threat/c2":{"get":{"operationId":"_threat_c2","summary":"C2 feed","tags":["Public API","Threat Intelligence"],"description":"Requires Pro+ access and enabled production distribution authorization. Disabled deployments return 503 without charging.\n\nMinimum plan: pro. Required scopes: c2:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string","enum":["all","online","offline","unknown"],"default":"all"},"in":"query","name":"status","required":false,"description":"C2 online-status filter."},{"schema":{"type":"string","maxLength":80},"in":"query","name":"malware","required":false,"description":"Malware-family filter."},{"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"},"in":"query","name":"country","required":false,"description":"Two-letter country code, e.g. US."},{"schema":{"type":"string","maxLength":120},"in":"query","name":"q","required":false,"description":"Search by IP, ASN, network name or malware family."},{"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1},"in":"query","name":"page","required":false,"description":"Page number, starting at 1."},{"schema":{"type":"integer","minimum":10,"maximum":100,"default":50},"in":"query","name":"limit","required":false,"description":"Page size or maximum number of returned records."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["c2:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string"},"port":{"type":"integer"},"malware":{"type":"string"}},"additionalProperties":true}},"page":{"type":"integer"},"limit":{"type":"integer"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/threat/activity":{"get":{"operationId":"_threat_activity","summary":"Threat activity","tags":["Public API","Threat Intelligence"],"description":"Returns observed threat statistics by activity category and time window.\n\nMinimum plan: pro. Required scopes: threat:analytics. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string","enum":["scanner","brute_force","web_attack"]},"in":"query","name":"category","required":true,"description":"Threat category: scanning, brute force or web attacks."},{"schema":{"type":"string","enum":["1d","7d","30d","90d"],"default":"90d"},"in":"query","name":"window","required":false,"description":"Lookback window."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:analytics"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"category":{"type":"string"},"windowDays":{"type":"integer"},"status":{"type":"string"},"eventCount":{"type":"integer"},"topSources":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string"},"eventCount":{"type":"integer"}},"additionalProperties":true}},"timeline":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"eventCount":{"type":"integer"},"sourceCount":{"type":"integer"}},"additionalProperties":true}},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/threat/trends":{"get":{"operationId":"_threat_trends","summary":"Threat trends","tags":["Public API","Threat Intelligence"],"description":"Returns observed threat trends within the selected time window.\n\nMinimum plan: pro. Required scopes: threat:analytics. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string","enum":["1d","7d","30d","90d"],"default":"90d"},"in":"query","name":"window","required":false,"description":"Lookback window."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:analytics"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"windowDays":{"type":"integer"},"status":{"type":"string"},"eventCount":{"type":"integer"},"timeline":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"eventCount":{"type":"integer"},"sourceCount":{"type":"integer"}},"additionalProperties":true}},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"eventCount":{"type":"integer"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/tools/dns":{"get":{"operationId":"_tools_dns","summary":"DNS lookup","tags":["Public API","Network Tools"],"description":"Queries DNS records of the selected type, reflecting the server-side query response.\n\nMinimum plan: free. Required scopes: dns:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"DNS query name; use a reverse lookup name for PTR records."},{"schema":{"type":"string","enum":["A","AAAA","CNAME","MX","NS","TXT","CAA","SOA","SRV","PTR"],"default":"A"},"in":"query","name":"type","required":false,"description":"DNS record type."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"queryType":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/reverse-ip":{"get":{"operationId":"_tools_reverse_ip","summary":"Reverse IP","tags":["Public API","Network Tools"],"description":"Requires an operator-configured passive DNS source. A missing or unavailable source returns 503, not a fabricated empty success.\n\nMinimum plan: free. Required scopes: dns:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IPv4 or IPv6 address."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"status":{"type":"string","enum":["resolved","no_records"]},"domains":{"type":"array","items":{"type":"string"}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/cname-chain":{"get":{"operationId":"_tools_cname_chain","summary":"CNAME chain","tags":["Public API","Network Tools"],"description":"Looks up the CNAME resolution chain for a domain.\n\nMinimum plan: free. Required scopes: dns:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Domain name, e.g. example.com."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"queryType":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/network-probe":{"post":{"operationId":"_tools_network_probe","summary":"Distributed ping / MTR","tags":["Public API","Network Tools"],"description":"Measurements originate from distributed probe nodes, not the caller IP. Provider capacity may be shared.\n\nMinimum plan: pro. Required scopes: probes:run. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"Public IP or hostname."},"mode":{"type":"string","enum":["ping","mtr"],"description":"Probe mode: ping or mtr."}},"required":["target","mode"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"mode":{"type":"string"},"status":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"node":{"type":"object","properties":{"country":{"type":"string"},"city":{"type":"string"}},"additionalProperties":true},"status":{"type":"string"},"stats":{"type":"object","properties":{"avgMs":{"type":"number","nullable":true},"lossPercent":{"type":"number"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/tools/tcp":{"post":{"operationId":"_tools_tcp","summary":"TCP reachability","tags":["Public API","Network Tools"],"description":"Public targets only. Measured from the CHA.LA server, not the caller network.\n\nMinimum plan: pro. Required scopes: probes:run. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"Public IP or hostname."},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Target TCP port."}},"required":["target","port"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"port":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"status":{"type":"string"},"latencyMs":{"type":"number"}},"additionalProperties":true}},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/tools/http-tls":{"post":{"operationId":"_tools_http_tls","summary":"HTTP and TLS","tags":["Public API","Network Tools"],"description":"Public HTTP(S) targets only; private destinations and unsafe redirects are rejected.\n\nMinimum plan: pro. Required scopes: probes:run. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","format":"uri","description":"Public HTTP(S) URL."}},"required":["target"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"redirectCount":{"type":"integer"},"steps":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"statusCode":{"type":"integer","nullable":true},"errorCode":{"type":"string","nullable":true}},"additionalProperties":true}},"tls":{"type":"object","properties":{"authorized":{"type":"boolean"}},"additionalProperties":true,"nullable":true},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/bgp/routes":{"get":{"operationId":"_bgp_routes","summary":"BGP routes","tags":["Public API","BGP Intelligence"],"description":"Searches collected routes and AS paths with pagination.\n\nMinimum plan: developer. Required scopes: bgp:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IP address, CIDR prefix or ASN."},{"schema":{"type":"integer","minimum":1,"default":1},"in":"query","name":"page","required":false,"description":"Page number, starting at 1."},{"schema":{"type":"integer","minimum":10,"maximum":100,"default":50},"in":"query","name":"limit","required":false,"description":"Page size or maximum number of returned records."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"observed":{"type":"boolean"},"match":{"type":"object","properties":{"prefix":{"type":"string"},"originAsns":{"type":"array","items":{"type":"integer"}},"lastObserved":{"type":"string","format":"date-time"}},"additionalProperties":true,"nullable":true},"routes":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"originAsn":{"type":"integer"},"asPath":{"type":"string"},"observedAt":{"type":"string","format":"date-time"}},"additionalProperties":true}},"page":{"type":"integer"},"limit":{"type":"integer"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/rpki/validate":{"get":{"operationId":"_rpki_validate","summary":"RPKI validation","tags":["Public API","BGP Intelligence"],"description":"Validation uses snapshots. Check expiry and stale flags for each validation; missing evidence must not be interpreted as valid.\n\nMinimum plan: free. Required scopes: registration:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IP address or CIDR prefix."},{"schema":{"type":"string"},"in":"query","name":"asn","required":false,"description":"Autonomous system number, e.g. AS13335."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["registration:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"prefix":{"type":"string","nullable":true},"requestedOrigin":{"type":"integer","nullable":true},"overallStatus":{"type":"string","enum":["valid","invalid","mixed","unknown","no_origin"]},"routeLookupAvailable":{"type":"boolean"},"validations":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"originAsn":{"type":"integer"},"status":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"bgp"}},"/api/public/v1/rdap/lookup":{"get":{"operationId":"_rdap_lookup","summary":"RDAP registration","tags":["Public API","Network Intelligence"],"description":"Looks up registration information for an IP, CIDR or ASN. Check cache and snapshot timestamps.\n\nMinimum plan: free. Required scopes: registration:read. Authenticate using X-API-Key or Authorization: Bearer. Successful requests cost one unit; failed/rejected requests cost zero. UTC quota reset.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IP address, CIDR prefix or ASN."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["registration:read"],"responses":{"200":{"description":"Successful response.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"targetKind":{"type":"string"},"found":{"type":"boolean"},"rir":{"type":"string"},"name":{"type":"string","nullable":true},"cidrs":{"type":"array","items":{"type":"string"}},"nameservers":{"type":"array","items":{"type":"string"}},"entities":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","nullable":true},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Invalid parameters.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Missing, invalid, expired, revoked or suspended API key.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Insufficient scope or plan.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Not found or not owned by this API client.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Idempotency conflict, expired job or active job limit.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"Target cannot be resolved or measured.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Rate or quota limit reached; rejected requests consume no units. Wait according to Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Internal processing failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Upstream response failure.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service or data source unavailable; no units charged. Back off according to Retry-After when present.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Upstream response timeout.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Shared account daily units after admission; concurrent calls may change this snapshot."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Remaining units in an active paid period, when applicable."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Per-key requests per UTC minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Units remaining after admission; failed requests are released."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying a limited request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}}},"servers":[{"url":"https://www.cha.la"}],"x-documentation":{"locale":"en","ui":{"explore":"Explore IP intelligence","noScript":"JavaScript is disabled. Use the OpenAPI documentation.","pageTitle":"IP Intelligence API Documentation · CHA.LA","metaDescription":"CHA.LA API documentation for IP intelligence, ASN, BGP, threat evidence and network tools. Explore authentication, free allowances, parameters and live requests.","docs":"API Docs","home":"Website","console":"API console","skip":"Skip to content","menu":"Navigation","close":"Close navigation","language":"Choose language","search":"Search endpoints or paths…","navigation":"Documentation navigation","overview":"Quick start","reference":"API reference","noResults":"No matching endpoints","loading":"Loading documentation…","loadError":"Documentation could not be loaded. Please reload and try again.","retry":"Reload","notFound":"Endpoint not found. Choose an endpoint from the navigation.","plan":"Minimum plan","scopes":"Required scopes","parameters":"Parameters","noParameters":"This endpoint has no request parameters.","field":"Field","type":"Type","description":"Description","required":"Required","optional":"Optional","path":"Path","query":"Query","header":"Header","default":"Default","minimum":"Minimum","maximum":"Maximum","minLength":"Min. length","maxLength":"Max. length","pattern":"Pattern","requestBody":"Request body","responses":"Response schema","headers":"Response headers","errors":"Errors & retries","test":"Try this endpoint","testNote":"A real request is sent only when you select Send and counts against your allowance. Your key stays in page memory only; reloading clears it.","key":"API key","keyPlaceholder":"Paste your API key","clearKey":"Clear","auth":"Authentication","send":"Send request","sending":"Sending…","cancel":"Stop waiting","response":"Live response","keyRequired":"Enter your API key first.","invalidJson":"The request body must be a valid JSON object.","invalidBody":"A required body field is missing, or a field type/value does not match the schema.","invalidPath":"Path values cannot contain a slash or backslash, or equal . or ...","failed":"The response could not be read. Check your connection. Retry an uncertain batch with the same Idempotency-Key.","cancelled":"Stopped waiting. The server may still process and charge accepted work. Reuse the same Idempotency-Key when retrying a batch.","timeout":"The wait timed out; the server outcome is unknown. Reuse the same Idempotency-Key when retrying a batch.","tooLarge":"Response exceeds 2 MB. Display stopped; narrow the query or use your backend.","example":"Request example","exampleNote":"YOUR_API_KEY is a placeholder. Examples never contain your entered key.","copy":"Copy","copied":"Copied","copyError":"Copy failed. Select and copy the text manually.","download":"Download OpenAPI","json":"JSON specification","yaml":"YAML specification","raw":"Full schema","empty":"Empty response","newId":"New batch ID","idemNote":"Keep this value when retrying the same batch. Change it only for a new, separately charged job.","localError":"Local validation failed; no request was sent.","unavailable":"Availability","responseNote":"These are field definitions, not live results. The server may add compatible fields.","responseHint":"No request sent yet.","apiVersion":"API version"},"groups":{"ip":"IP & privacy","bgp":"ASN & routing","threat":"Threat intelligence","tools":"Network tools","batch":"Batch queries"},"guide":{"title":"IP intelligence for your application","intro":"One API for IP intelligence, network ownership, routing and threat evidence. Enable account access, then start with a single request.","steps":[{"title":"Create an account","text":"Register, sign in to the API console and request access. Email accounts currently need manual approval; approval is not email verification."},{"title":"Get an API key","text":"After approval, create a key or receive an account-bound key from the administrator. The full secret is displayed only once; store it securely."},{"title":"Call from your backend","text":"Use X-API-Key or Authorization: Bearer. Never place keys in URLs, public repositories or frontend code."}],"allowanceTitle":"Free allowance & paid periods","allowance":"Free accounts receive 1,000 units per day, resetting at midnight UTC. All keys and website batches share the balance; replacing or revoking a key does not reset usage.","planColumns":["Plan","Daily safety cap","Requests/min/key","Active keys","Targets/batch"],"plans":[["Free","1,000","30","2","100"],["Developer","10,000","120","5","500"],["Pro","100,000","600","20","2,000"],["Enterprise","1,000,000","3,000","100","5,000"]],"billing":"Paid periods are provisioned manually with a plan, explicit total allowance and expiry. Period allowance is not the daily cap multiplied by days. Online checkout and automatic renewal are not enabled. Expiry returns the account to Free; existing key scopes never expand automatically. Legacy organization contracts and lower per-key limits also apply.","usageTitle":"How usage is counted","usage":["Successful synchronous lookups cost one unit; batch status/results reads, failures, denials and rejected rate-limited requests cost zero.","Batches: accepted deduplicated targets are charged once; later target failures are not refunded. Idempotency-Key is required; replaying the same request with the same identifier does not charge again.","Website batch progress and downloads do not incur additional units. For 429 / 503, honor Retry-After when present and use exponential backoff."],"boundaries":["Use /api/public/v1 for customer integrations. /api/v1 is a website-internal interface, not the customer contract. External browser CORS is not enabled; call from your backend.","Reverse-IP source: not configured; unavailable.","C2 distribution: not enabled.","RPKI uses snapshots. Check observedAt, expiresAt, stale and riskStatus. Unknown or missing evidence does not mean safe. /api/capabilities is the source of current capability status."]}}}