{"openapi":"3.1.0","info":{"title":"Company Signals API","version":"1.0.0","description":"Daily open-role counts per company from public Greenhouse, Lever and Ashby job boards. Compiled by an AI from public job boards, not human-reviewed. Removal on request: POST /v1/removal. Series starts 2026-10-09.","contact":{"email":"reese@lastminutedealshq.com"}},"servers":[{"url":"https://company-signals.lastminutedeals.workers.dev"}],"paths":{"/v1/company/{host}":{"get":{"summary":"Daily open-role history for one company","security":[{"apiKey":[]}],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string","example":"example-co.test"},"description":"The company's website host, lower case, no www."}],"responses":{"200":{"description":"Series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/changes":{"get":{"summary":"Companies whose open-role count changed since the previous captured day","security":[{"apiKey":[]}],"parameters":[{"name":"day","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"min_delta","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Changes, largest first, at most 500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Changes"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/export":{"get":{"summary":"One captured day for every tracked company (Growth and Pro plans)","security":[{"apiKey":[]}],"parameters":[{"name":"day","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"All rows of the day, at most 6000"},"401":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/free/company/{host}":{"get":{"summary":"Keyless sample for one company: tracked or not, open roles today, 7-day change once the series is long enough (10 calls a day per caller)","security":[],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string","example":"example-co.test"},"description":"The company's website host, lower case, no www."}],"responses":{"200":{"description":"Sample"},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/coverage":{"get":{"summary":"How many companies and boards are tracked (no key needed)","security":[],"responses":{"200":{"description":"Coverage"}}}},"/v1/companies":{"get":{"summary":"Tracked company hosts, 500 per page","security":[{"apiKey":[]}],"parameters":[{"name":"after","in":"query","schema":{"type":"string"},"description":"Return hosts after this one (cursor)."}],"responses":{"200":{"description":"Hosts and the next cursor"},"401":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/key":{"post":{"summary":"Ask for a free key; a link is sent to the address","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"responses":{"200":{"description":"Mail sent"},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/removal":{"post":{"summary":"Remove a company from the API at once","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["host"],"properties":{"host":{"type":"string"},"note":{"type":"string"}}}}}},"responses":{"200":{"description":"Removed"},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"compiled_by_ai":{"type":"string"}}},"Company":{"type":"object","properties":{"host":{"type":"string"},"matched_by":{"type":"string","enum":["host","name","derived"]},"boards":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"token":{"type":"string"},"source_url":{"type":"string"}}}},"series":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"board_kind":{"type":"string"},"open_count":{"type":"integer"},"depts":{"type":"object","additionalProperties":{"type":"integer"}}}}}}},"Changes":{"type":"object","properties":{"day":{"type":"string"},"changes":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"open_now":{"type":"integer"},"open_before":{"type":"integer"},"before_day":{"type":"string"},"delta":{"type":"integer"}}}}}}}}}