{"openapi":"3.1.0","info":{"title":"LetMeCreep API","version":"1.0.0","description":"Programmatic OSINT phone lookups. All calls require a Bearer API key. See /app/settings/api-keys to create one.","contact":{"email":"support@letmecreep.app"}},"servers":[{"url":"https://letmecreep.app/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API-Key"}},"schemas":{"LookupCreateRequest":{"type":"object","required":["phone"],"properties":{"phone":{"type":"string","description":"E.164 or best-guess phone number.","example":"+14155552671"}}},"LookupCreateResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","properties":{"snapshotUid":{"type":"string"},"balance":{"type":"integer","description":"Remaining credits."}}}}},"SnapshotDetail":{"type":"object","properties":{"uid":{"type":"string"},"phone":{"type":"string"},"phoneMasked":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"status":{"type":"string","enum":["queued","running","done","partial","failed"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true},"durationMs":{"type":"integer","nullable":true},"sources":{"type":"object"},"result":{"type":"object","nullable":true,"description":"Merged OSINT result with per-source data."}}},"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"paths":{"/lookups":{"post":{"summary":"Create a lookup","description":"Runs a phone-number OSINT lookup across all six sources. Charges 1 credit (whether from cache or fresh). Returns a snapshot UID; poll GET /lookups/{uid} until status is done or partial.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCreateRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCreateResponse"}}}},"400":{"description":"Invalid phone number","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid Bearer token"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"}}}},"/lookups/{uid}":{"get":{"summary":"Get a snapshot","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Snapshot detail","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/SnapshotDetail"}}}}}},"401":{"description":"Missing or invalid Bearer token"},"404":{"description":"Not found"}}}}}}