{"openapi":"3.2.0","info":{"title":"FraudGuard and IP Risk Intelligence API","description":"Real-time IP Geolocation, VPN/Proxy detection, and Fraud Risk Scoring for e-commerce and SaaS.","version":"1.0.0"},"servers":[{"url":"https://taifk.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"x-agent-commerce":{"catalog_url":"https://taifk.jojapi.net/_jojapi/agent/plans","discovery_url":"https://taifk.jojapi.net/.well-known/x402","directory_url":"https://agents.jojapi.net/apis/fraudguard-and-ip-risk-intelligence-api","docs":"https://docs.jojapi.com/consumers/agents"},"paths":{"/ip-lookup":{"get":{"operationId":"get_ip_lookup","summary":"IP Lookup","description":"Returns geolocation, timezone, country, city, and ASN intelligence for a public IPv4 or IPv6 address. If omitted, the service uses the detected client IP.","responses":{"200":{"description":"Successful IP geolocation and ASN lookup.","content":{"application/json":{"examples":{"Google-DNS-lookup":{"summary":"Google DNS lookup","description":"Example response for the public IP 8.8.8.8.","value":{"success":true,"data":{"ip":"8.8.8.8","country":"United States","country_code":"US","city":"Mountain View","region":"California","region_code":null,"timezone":"America/Los_Angeles","timezones":["America/Los_Angeles"],"asn":15169,"organization":"Google LLC","source":"ipquery.io","data_quality":"complete","provider_note":"External geolocation and risk signals are supplied by ipquery.io."},"error":null}}}}}},"400":{"description":"Invalid or non-public IP address, or client IP unavailable. Supply a valid public IPv4 or IPv6 address in the ip query parameter.","content":{"application/json":{"examples":{"invalid-ip":{"summary":"Malformed IP address","value":{"success":false,"data":null,"error":{"code":"INVALID_IP","message":"Query parameter \"ip\" must be a valid IPv4 or IPv6 address."}}}}}}}},"parameters":[{"name":"ip","in":"query","required":false,"schema":{"type":"string","example":"8.8.8.8","default":"8.8.8.8"}}]}},"/fraud-check":{"get":{"operationId":"get_fraud_check","summary":"Fraud Check","description":"Evaluates a public IP address for VPN, proxy, Tor, mobile, and datacenter signals and returns a transparent fraud_score from 0 to 100 plus is_high_risk.","responses":{"200":{"description":"Successful IP fraud-risk assessment.","content":{"application/json":{"examples":{"Google-DNS-risk-assessment":{"summary":"Google DNS risk assessment","description":"Example risk response for the public IP 8.8.8.8.","value":{"success":true,"data":{"ip":"8.8.8.8","fraud_score":45,"is_high_risk":false,"risk_level":"medium","confidence":"medium","signals":{"is_datacenter":true,"is_vpn_or_proxy":false,"is_vpn":false,"is_proxy":false,"is_tor":false,"is_mobile":false,"provider_risk_score":0,"asn":15169,"organization":"Google LLC","country_code":"US"},"reasons":["datacenter_or_hosting_network"],"model_version":"fraud-guard-heuristic-v1","evaluated_at":"2026-08-09T16:05:09.643Z","assessment_note":"This score combines ipquery.io risk signals with transparent hosting and bot heuristics. It does not prove fraudulent intent and should not be the sole basis for blocking a user."},"error":null}}}}}},"400":{"description":"Invalid or non-public IP address, or client IP unavailable. Supply a valid public IPv4 or IPv6 address in the ip query parameter.","content":{"application/json":{"examples":{"invalid-ip":{"summary":"Malformed IP address","value":{"success":false,"data":null,"error":{"code":"INVALID_IP","message":"Query parameter \"ip\" must be a valid IPv4 or IPv6 address."}}}}}}}},"parameters":[{"name":"ip","in":"query","required":false,"schema":{"type":"string","example":"8.8.8.8","default":"8.8.8.8"}}]}},"/health":{"get":{"operationId":"get_health","summary":"Health","description":"Public monitoring endpoint that returns the current FraudGuard service status.","responses":{"200":{"description":"Service health response.","content":{"application/json":{"examples":{"Success":{"summary":"Success","description":"The FraudGuard service is healthy.","value":{"status":"ok","service":"fraud-guard"}}}}}},"401":{"description":"Generated by the JoJ API gateway when the consumer API key is missing or invalid, or no active subscription exists. This is not the Worker health response. Send your own X-JoJAPI-Key and use an active plan. Gateway responses are identified by X-Jojapi-Gateway-Response: true.","content":{"application/json":{"examples":{"missing-api-key":{"summary":"Gateway request without a consumer API key","value":{"message":"Unauthorized"}}}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}