{"openapi":"3.1.0","info":{"title":"Reachlist API","version":"1","description":"LinkedIn data and verified work emails, from one prompt. Every tool is also an MCP tool at https://reachlist.app/mcp.","contact":{"email":"support@reachlist.app"}},"servers":[{"url":"https://reachlist.app"}],"security":[{"apiKey":[]}],"paths":{"/v1/tools":{"get":{"operationId":"listTools","summary":"The tools, with their prices in credits","security":[],"responses":{"200":{"description":"The tools","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolList"}}}}}}},"/v1/tools/get_person":{"post":{"operationId":"get_person","summary":"Get a person","description":"A LinkedIn profile URL in, a clean profile out: name, headline, location, about, followers. Set raw for the full record, with roles and education where the provider has them.\n\nPrice: 1 credit per call that finds something. A call that finds nothing costs nothing.","x-credits":1,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}},"required":["linkedin_url"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/get_company":{"post":{"operationId":"get_company","summary":"Get a company","description":"A LinkedIn company URL or a domain in, the company out: name, industry, size, location, website, description.\n\nPrice: 1 credit per call that finds something. A call that finds nothing costs nothing.","x-credits":1,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"domain":{"type":"string","pattern":"^(?!-)[a-z0-9-]+(\\.[a-z0-9-]+)+$","description":"A company's web domain, such as acme.com"},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/get_job":{"post":{"operationId":"get_job","summary":"Get a job post","description":"A LinkedIn job URL in, the job post out: title, company, place, posted date, description.\n\nPrice: 1 credit per call that finds something. A call that finds nothing costs nothing.","x-credits":1,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}},"required":["job_url"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/search_jobs":{"post":{"operationId":"search_jobs","summary":"Search job posts","description":"Job posts by title, place and company. Charged per 10 results returned.\n\nPrice: 2 credits per 10 results returned. A call that finds nothing costs nothing.","x-credits":2,"x-billing":{"kind":"per_page","pageSize":10},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Job title words, such as 'Head of Sales'","type":"string","minLength":2},"location":{"description":"A city, region or country","type":"string","minLength":2},"company":{"description":"A company name or domain","type":"string","minLength":2},"limit":{"default":10,"description":"How many results to return, at most 100","type":"integer","minimum":1,"maximum":100},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/search_people":{"post":{"operationId":"search_people","summary":"Search people","description":"People by job title, company and place, such as 'VPs of Sales at Series B SaaS companies in Berlin'. Charged per 10 results returned.\n\nPrice: 2 credits per 10 results returned. A call that finds nothing costs nothing.","x-credits":2,"x-billing":{"kind":"per_page","pageSize":10},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Job title words, such as 'VP Sales'","type":"string","minLength":2},"company":{"description":"A company name or domain","type":"string","minLength":2},"location":{"description":"A city, region or country","type":"string","minLength":2},"industry":{"description":"An industry, such as 'SaaS' or 'fintech'","type":"string","minLength":2},"limit":{"default":10,"description":"How many results to return, at most 100","type":"integer","minimum":1,"maximum":100},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/company_employees":{"post":{"operationId":"company_employees","summary":"People at a company","description":"People who work at a company, optionally filtered by title. Charged per 10 results returned.\n\nPrice: 2 credits per 10 results returned. A call that finds nothing costs nothing.","x-credits":2,"x-billing":{"kind":"per_page","pageSize":10},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"domain":{"type":"string","pattern":"^(?!-)[a-z0-9-]+(\\.[a-z0-9-]+)+$","description":"A company's web domain, such as acme.com"},"title":{"description":"Only people whose title matches, such as 'engineering'","type":"string","minLength":2},"limit":{"default":10,"description":"How many results to return, at most 100","type":"integer","minimum":1,"maximum":100},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/find_email":{"post":{"operationId":"find_email","summary":"Find a work email","description":"A person's verified work email, from their LinkedIn URL or their name and company domain. Only addresses that pass verification and match the company's domain are returned.\n\nPrice: 2 credits per call that finds something. A call that finds nothing costs nothing.","x-credits":2,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"full_name":{"description":"The person's full name","type":"string","minLength":3},"domain":{"type":"string","pattern":"^(?!-)[a-z0-9-]+(\\.[a-z0-9-]+)+$","description":"A company's web domain, such as acme.com"}}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/verify_email":{"post":{"operationId":"verify_email","summary":"Verify an email","description":"One address in: valid, invalid or risky.\n\nPrice: 0.25 credits per call that finds something. A call that finds nothing costs nothing.","x-credits":0.25,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The address to check"}},"required":["email"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/find_phone":{"post":{"operationId":"find_phone","summary":"Find a phone number","description":"A person's phone number from their LinkedIn URL. Charged only when one is found.\n\nPrice: 10 credits per call that finds something. A call that finds nothing costs nothing.","x-credits":10,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"}},"required":["linkedin_url"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/recent_posts":{"post":{"operationId":"recent_posts","summary":"Recent LinkedIn posts","description":"A person's most recent LinkedIn posts, for a personal opener.\n\nPrice: 1 credit per call that finds something. A call that finds nothing costs nothing.","x-credits":1,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"type":"string","format":"uri","description":"A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe"},"limit":{"default":3,"description":"How many results to return, at most 10","type":"integer","minimum":1,"maximum":10}},"required":["linkedin_url"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/similar_companies":{"post":{"operationId":"similar_companies","summary":"Similar companies","description":"Companies like a seed company's domain. Charged per 10 results returned.\n\nPrice: 2 credits per 10 results returned. A call that finds nothing costs nothing.","x-credits":2,"x-billing":{"kind":"per_page","pageSize":10},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","pattern":"^(?!-)[a-z0-9-]+(\\.[a-z0-9-]+)+$","description":"A company's web domain, such as acme.com"},"limit":{"default":10,"description":"How many results to return, at most 100","type":"integer","minimum":1,"maximum":100},"raw":{"default":false,"description":"Return the full provider record instead of the trimmed one","type":"boolean"}},"required":["domain"]}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/tools/credits":{"post":{"operationId":"credits","summary":"Credits","description":"Your credit balance and this month's usage. Free.\n\nPrice: 0 credits per call that finds something. A call that finds nothing costs nothing.","x-credits":0,"x-billing":{"kind":"per_call"},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The answer. `found` is false, and nothing is charged, when nothing was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResult"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An API key from the dashboard, starting rl_"}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"Send the same key when retrying: the first answer comes back and nothing more is charged. Kept 24 hours.","schema":{"type":"string","minLength":1,"maxLength":255}}},"responses":{"Error":{"description":"The call was refused; nothing was charged","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"ToolResult":{"type":"object","required":["found","data","credits_charged","balance","call_id"],"properties":{"found":{"type":"boolean"},"data":{"description":"The record, or a list of rows for search tools; null when nothing was found"},"credits_charged":{"type":"number"},"balance":{"type":["number","null"],"description":"Credits left after the call"},"call_id":{"type":"string","format":"uuid"}}},"ToolList":{"type":"object","required":["tools"],"properties":{"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"credits":{"type":"number"},"billing":{"type":"object"}}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["unauthorized","unknown_tool","invalid_input","rate_limited","insufficient_credits","monthly_cap","not_available","provider_error","idempotency_mismatch","idempotency_in_progress","idempotency_answer_lost"]},"message":{"type":"string"}}}}}}}}