{"ok":true,"requestId":"622ef756-ba28-4c82-9ee2-2002d7df8446","result":{"service":"reverse-lookup","database":"Neon via Hyperdrive","table":"public.social_profiles","supportedLookups":["GET /profiles/by-screen-name/:screenName","GET /profiles/by-email/:email","POST /profiles/batch","POST /admin/accounts","GET /admin/accounts","PATCH /admin/accounts/:accountId","GET /admin/analytics","POST /admin/accounts/:accountId/api-keys","POST /admin/accounts/:accountId/credits/grant","POST /admin/accounts/:accountId/credits/revoke","GET /admin/accounts/:accountId","GET /auth/me","POST /auth/credits/consume","GET /meta/schema","GET /meta/runtime","GET /health/ready","GET /health"],"docs":{"landing":"/docs","app":{"openApi":"/openapi/app.json","reference":"/docs/app"},"admin":{"openApi":"/openapi/admin.json","reference":"/docs/admin"}},"quickstart":{"summary":"Admin: POST /admin/accounts (X-Admin-Key) with initialCredits, then POST /admin/accounts/{id}/api-keys; consumer: X-API-Key on /auth/me and /profiles/by-screen-name, /profiles/by-email, /profiles/batch. See README and scripts/provision-max-trigify.sh.","responseShapes":{"createAccount":"{ ok, requestId, result: { id, email, creditBalance, ... } }","createApiKey":"{ ok, requestId, result: { apiKey: { secret, keyPrefix, id, ... } } } — secret is one-time only","authMe":"{ ok, requestId, result: { accountId, apiKeyId, keyPrefix, creditBalance, email, name, ... } }","profileRecord":"ProfileRecord: timeZone, location, email, name, language, screenName, profileUrl, createdAt (no numeric id field; see README).","batchProfiles":"POST /profiles/batch: result.query.requested + result.counts; result.profiles deduped; result.screenNames | emails = per-leg slices; meta.credits { debited, balance }."}},"notes":["Lookups are exact-match only against indexed columns (id, lower(screen_name), lower(email)); pasted X/Twitter URLs and mailto-style emails are normalized automatically.","Credits: 5 per distinct profile returned from GET /profiles/by-screen-name/:screenName, GET /profiles/by-email/:email, and POST /profiles/batch (batch dedupes across legs).","Batch: prefer result.profiles for one clean array; use screenNames/emails slices to see which lookup leg matched.","Optional header Idempotency-Key on profile requests avoids duplicate debits on safe retries.","GET /meta/schema (requires X-Admin-Key) returns table stats and index definitions.","Authentication: X-Admin-Key for admin routes; X-API-Key for profile and consumer auth routes.","Admin credits: grant adds a lot + ledger row; revoke debits lots (same FIFO as lookups) with a required idempotency key per revoke request."]}}