DataFrunk HTTP API

API documentation

This reference lives at https://api.datafrunk.com/api-docs. JSON base: https://api.datafrunk.com/api. On this host you can also call relative /api/* routes.

Authentication

Tenant-scoped requests use the session bearer token and tracing headers from the signed-in app.

Authorization: Bearer <token>
x-tenant-id: <tenant-uuid>
x-user-id: <user-uuid>
x-user-email: <user-email>

Some bootstrap routes return 200 with authenticated: false instead of 401 when no bearer token is present (subscription status, provider catalog).

Health

  • GET /api/health — service health

Auth and signup

  • POST /api/auth/lookup-email — resolve email / org policy
  • POST /api/auth/login — password sign-in (returns MFA challenge when required)
  • GET /api/auth/session — restore session snapshot from a valid bearer token
  • POST /api/auth/login-entra — Microsoft ID token
  • POST /api/auth/login-google — Google ID token
  • POST /api/auth/login/verify-mfa — complete email OTP
  • POST /api/auth/login/forget-remembered-mfa — clear remembered device
  • GET /api/auth/entra-config — SPA Entra metadata (anonymous)
  • GET /api/auth/google-config — Google client id (anonymous)
  • POST /api/auth/signup/request-otp, POST /api/auth/signup/verify-otp, POST /api/auth/signup/complete — registration
  • GET /api/auth/invite-preview — invitation metadata

Tenant, audit, billing

  • GET /api/tenants/users — tenant user list
  • GET /api/audit/logs — audit log entries
  • GET /api/providers/availability — provider catalog (tenant or bootstrap)
  • GET /api/payments/subscription-status — billing snapshot
  • POST /api/payments/checkout-session, portal-session, webhook — Stripe

Your SQL database (Azure SQL)

Endpoints for connections you approve in your own Azure subscription. Data stays in your database; DataFrunk stores encrypted connection metadata only.

  • GET /api/tenant/connections — connection metadata (no secrets)
  • POST /api/tenant/connections/register — store encrypted credentials (Default Admin)
  • POST /api/tenant/connections/validate — probe connection
  • GET /api/tenant/sql/tables — list base tables (signed-in tenant roles)
  • GET /api/tenant/sql/rows — paginated rows; optional includeTotal=1 for COUNT_BIG
  • POST /api/tenant/sql/cell — update one cell by primary key (Editor+)

AI (metered)

  • POST /api/ai/query — chat completion with credit checks
  • GET /api/ai/credits-summary — credits snapshot
  • POST /api/ai/metered-billing/configure — Default Admin

Console errors

  • POST /api/console-errors/report
  • GET /api/console-errors/open
  • POST /api/console-errors/resolve

Full curl examples and narrative reference: repository file api/API_REFERENCE.md.