{"openapi":"3.2.0","info":{"title":"Company Domain Lookup API","description":"Find a company's official domain from its name, with confidence, LinkedIn and industry details. $0.035 per completed lookup, including no-match results.","version":"1.0.0"},"servers":[{"url":"https://domain-lookup.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"x-agent-commerce":{"catalog_url":"https://domain-lookup.jojapi.net/_jojapi/agent/plans","discovery_url":"https://domain-lookup.jojapi.net/.well-known/x402","directory_url":"https://agents.jojapi.net/apis/company-domain-lookup","docs":"https://docs.jojapi.com/consumers/agents"},"paths":{"/lookup":{"post":{"operationId":"post_lookup","summary":"Find Company Domain","description":"Find a company's official domain from its name. Send a JSON object containing only company_name, from 1 to 500 characters. A completed lookup returns HTTP 200 with success: true, including when no match is found. A no-match result has data.domain: null and confidence: 0. Every completed lookup costs $0.035, including no-match results and repeated saved results. Invalid input, authentication, rate-limit, provider and server errors are free. Saved results are reused until manually updated; repeating a request does not force a new search. Limits per buyer: 5 uncached requests and 15 saved-result requests per minute, with up to 2 simultaneous AI searches. Confidence is an estimate, not a guarantee; is_live reflects the saved search assessment. Additional input fields and batch requests are not supported. Response examples are illustrative.","responses":{"200":{"description":"Lookup completed. Found, no-match and cached results are all billable at $0.035 per request. No match has domain: null and confidence: 0. Example data is fictional.","content":{"application/json":{"schema":{"type":"object","required":["success","message","data"],"properties":{"success":{"type":"boolean","const":true},"message":{"type":"string"},"data":{"type":"object","required":["domain","confidence","linkedin_url","industry","sub_industry","sector","is_live","reasons","lower_reasons"],"properties":{"domain":{"type":["string","null"]},"confidence":{"type":"integer","minimum":0,"maximum":100,"description":"Estimated match confidence; 0 for no match."},"linkedin_url":{"type":["string","null"]},"industry":{"type":["string","null"]},"sub_industry":{"type":["string","null"]},"sector":{"type":["string","null"]},"is_live":{"type":["boolean","null"],"description":"Saved assessment of domain availability, not a live check on every request."},"reasons":{"type":"array","items":{"type":"string"}},"lower_reasons":{"type":"array","items":{"type":"string"}}}}}},"examples":{"found":{"summary":"Official domain found","description":"Fictional example. This completed result is billable, including when returned from saved data.","value":{"success":true,"message":"Company lookup completed.","data":{"domain":"example.com","confidence":91,"linkedin_url":null,"industry":"Software","sub_industry":null,"sector":null,"is_live":true,"reasons":["Illustrative match rationale"],"lower_reasons":[]}}},"no_match":{"summary":"Search completed without a match","description":"Illustrative no-match response. The completed search is billable, including repeated responses from saved data.","value":{"success":true,"message":"Company lookup completed.","data":{"domain":null,"confidence":0,"linkedin_url":null,"industry":null,"sub_industry":null,"sector":null,"is_live":null,"reasons":[],"lower_reasons":["No reliable company-domain match was identified."]}}}}}}},"401":{"description":"Authentication failed. Not billed.","content":{"application/json":{"schema":{"type":"object","required":["success","message","error"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"},"error":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","enum":["authentication_failed"]}}}}},"examples":{"authentication_failed":{"summary":"Authentication failed","description":"Illustrative response.","value":{"success":false,"message":"Authentication failed.","error":{"reason":"authentication_failed"}}}}}}},"422":{"description":"Invalid JSON or company_name, missing company_name, or unsupported additional properties. Not billed.","content":{"application/json":{"schema":{"type":"object","required":["success","message","error"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"},"error":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","enum":["validation_failed"]}}}}},"examples":{"validation_failed":{"summary":"Invalid request","description":"Illustrative response.","value":{"success":false,"message":"The request is invalid.","error":{"reason":"validation_failed"}}}}}}},"429":{"description":"Request limit exceeded. Not billed. Respect Retry-After (seconds). Reasons: origin_capacity_exceeded, lookup_cache_rate_limit_exceeded, lookup_rate_limit_exceeded, lookup_retry_cooldown, duplicate_lookup_in_progress, buyer_concurrency_limit_exceeded, global_concurrency_limit_exceeded, daily_ai_budget_exceeded.","content":{"application/json":{"schema":{"type":"object","required":["success","message","error"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"},"error":{"type":"object","required":["reason","retry_after"],"properties":{"reason":{"type":"string","enum":["origin_capacity_exceeded","lookup_cache_rate_limit_exceeded","lookup_rate_limit_exceeded","lookup_retry_cooldown","duplicate_lookup_in_progress","buyer_concurrency_limit_exceeded","global_concurrency_limit_exceeded","daily_ai_budget_exceeded"]},"retry_after":{"type":"integer","minimum":1,"description":"Seconds to wait; also returned in the Retry-After response header."}}}}},"examples":{"rate_limited":{"summary":"Wait before retrying","description":"Illustrative response. Retry-After: 30 is also returned as a response header.","value":{"success":false,"message":"Request limit exceeded.","error":{"reason":"lookup_rate_limit_exceeded","retry_after":30}}}}}}},"500":{"description":"The request could not be completed. Not billed. Reasons: request_failed or cached_result_unusable.","content":{"application/json":{"schema":{"type":"object","required":["success","message","error"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"},"error":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","enum":["request_failed","cached_result_unusable"]}}}}},"examples":{"request_failed":{"summary":"Request failed","description":"Server or provider failure; not billed.","value":{"success":false,"message":"The request could not be completed.","error":{"reason":"request_failed"}}}}}}},"503":{"description":"Temporarily unavailable. Not billed. buyer_identity_unavailable: buyer identity could not be established. admission_control_unavailable: request admission control could not be checked.","content":{"application/json":{"schema":{"type":"object","required":["success","message","error"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"},"error":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","enum":["buyer_identity_unavailable","admission_control_unavailable"]}}}}},"examples":{"admission_control_unavailable":{"summary":"Temporarily unavailable","description":"Not billed.","value":{"success":false,"message":"Admission control is unavailable.","error":{"reason":"admission_control_unavailable"}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_name"],"additionalProperties":false,"properties":{"company_name":{"type":"string","minLength":1,"maxLength":500,"description":"Company name, non-empty after whitespace normalization.","examples":["Example Labs"]}}},"example":{"company_name":"Example Labs"}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}