DataScreenIQ API  ·  v1.0.0  ·  Base URL: https://api.datascreeniq.com

Overview
Authentication

API Key

Pass your key in the X-API-Key header on every request. Get a free key at datascreeniq.com/signup — 500K rows/month free.

X-API-Key: dsiq_live_...
Error codes
StatusCodeMeaning
200Success
400INVALID_JSON · MISSING_SOURCE · INVALID_ROWSBad payload
401AUTH_INVALIDMissing or invalid API key
413PAYLOAD_TOO_LARGEOver 10,000 rows per request
429PLAN_LIMIT_EXCEEDED · RATE_LIMITEDMonthly row limit or rate limit hit
Screening
Screen a payload
Submit rows for quality screening. Returns PASS, WARN, or BLOCK with a full issue breakdown, schema map with confidence scores, and drift events. Also accepts text/csv with X-Source header.
POST /v1/screen Core endpoint
Request body
FieldTypeDescription
sourcestringrequiredPipeline or table name — used for baseline tracking
rowsarrayrequiredArray of row objects. Max 10,000 per request.
options.full_scanbooleanoptionalAnalyze all rows instead of sampling. Default: false.
curl
curl -X POST https://api.datascreeniq.com/v1/screen \
  -H "Content-Type: application/json" \
  -H "X-API-Key: dsiq_live_..." \
  -d '{"source":"orders","rows":[
    {"order_id":"ORD-001","amount":99.50,"email":"[email protected]"},
    {"order_id":"ORD-002","amount":"broken","email":null}
  ]}'
Response — 200 OK
json
{
  "request_id": "batch_8fb151d5771f0cec",
  "status": "BLOCK",
  "health_score": 0.34,
  "decision": {
    "action": "BLOCK",
    "reason": "Type mismatch in: 'amount'; High null rate in 'email' (50%)"
  },
  "schema": {
    "order_id": { "type": "string", "confidence": 1.0 },
    "amount": { "type": "mixed", "confidence": 0.5 },
    "email": { "type": "string", "confidence": 1.0 }
  },
  "schema_fingerprint": "59b492b0e8ab0ca0...",
  "issues": {
    "type_mismatches": {
      "amount": { "expected": "number", "found": ["string"], "sample_value": "broken", "severity": "critical" }
    },
    "null_rates": {
      "email": { "actual": 0.50, "threshold": 0.30, "severity": "critical" }
    }
  },
  "stats": { "rows_received": 2, "rows_sampled": 2, "source": "orders" },
  "latency_ms": 38,
  "timestamp": "2026-03-31T10:00:00.000Z"
}
Reset baseline
Clears the schema baseline for a source. The next screen call builds a fresh baseline. Use after fixing data quality issues in your pipeline.
DELETE /v1/schema/{source} Reset one source
curl
curl -X DELETE https://api.datascreeniq.com/v1/schema/orders -H "X-API-Key: dsiq_live_..."
json — 200 OK
{ "ok": true, "reset": "orders", "message": "Baseline reset for source \"orders\"" }
DELETE /v1/schema Reset all sources
curl
curl -X DELETE https://api.datascreeniq.com/v1/schema -H "X-API-Key: dsiq_live_..."
Jobs
List jobs
Returns recent screening jobs sorted newest first.
GET /v1/jobs ?limit=50&source=orders
Query parameters
ParamTypeDefaultDescription
limitinteger50Max jobs to return (max 200)
sourcestringFilter by source name
Aggregate statistics
Returns quality stats grouped by source for a given time window. Used by the dashboard overview.
GET /v1/stats ?days=7
ParamTypeDefaultDescription
daysinteger30Days to aggregate (max 365)
Keys
API keys
List, create, and delete API keys. The full key is only shown at creation — store it immediately.
GET /v1/keys List all keys
curl
curl https://api.datascreeniq.com/v1/keys -H "X-API-Key: dsiq_live_..."
POST /v1/keys Create a key
json — 201 Created
{ "key": "dsiq_live_...", "id": "key_abc123", "name": "Production" }
DELETE /v1/keys/{id} Delete a key
curl
curl -X DELETE https://api.datascreeniq.com/v1/keys/key_abc123 -H "X-API-Key: dsiq_live_..."
Billing
Billing
Get current plan and usage, or create a Stripe checkout session.
GET /v1/billing Plan & usage
json — 200 OK
{ "plan": "starter", "rowsProcessed": 142000, "periodEnd": "2026-03-31T23:59:59.000Z" }
POST /v1/billing/checkout Create checkout
FieldValues
tierstarter · growth · scale
json — 200 OK
{ "url": "https://checkout.stripe.com/..." }
System
Health check
No authentication required. Returns API status and version.
GET /v1/health No auth required
json — 200 OK
{ "status": "ok", "version": "1.0.0" }