Home API Docs Blog Pricing Get API Key
← Home

getqueryly API

Upload your file via code, ask in plain English, get calculated answers from your actual file.

Base URL: https://getqueryly.com

Quick Start

# 1. Upload a dataset
curl -X POST https://getqueryly.com/api/data-scientist/upload \
  -F "session_id=my_session_1" \
  -F "file=@sales_data.csv"

# 2. Ask a question
curl -X POST https://getqueryly.com/api/data-scientist/query \
  -F "session_id=my_session_1" \
  -F "query=Show average revenue by region"

# 3. Run a health check
curl https://getqueryly.com/api/data-scientist/health/my_session_1

Authentication

getqueryly supports two authentication methods: API keys for server-to-server calls, and session tokens for user sessions.

API Key Authentication

Generate an API key from the dashboard. Include it in the X-API-Key header.

curl -H "X-API-Key: dmk_your_key_here" \
  https://getqueryly.com/api/makes/limits

Bearer Token Authentication

For user-specific endpoints, use the session token from sign-in.

curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://getqueryly.com/api/auth/me

Rate Limits

Limits are per-day and reset at midnight UTC. Anonymous users get 2 uses/day.

PlanMakesPrice
Anonymous2/dayFree
Free (registered)10/dayFree
Starter50 (no expiry)GHS 49
Growth200 (no expiry)GHS 149
Pro600 (no expiry)GHS 399

Paid users have no daily limit. Buy as many times as you want, balance stacks.

Requests per minute (per API key)

AI endpoints (analysis, chat, actions, MCP) get the AI rate. Exceeding the rate returns 429 with a Retry-After header.

PlanRegular RPMAI RPM
Free10/min5/min
Starter30/min15/min
Developer60/min30/min
Business120/min60/min

Every API response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. Live per-key state is on the usage page.

Upload File

POST /api/data-scientist/upload

Upload a CSV, Excel, JSON, PDF, or text file. Returns an overview of the data and a session ID for querying.

ParamTypeRequiredDescription
session_idstringYesUnique session identifier (e.g., ds_1234567890_abc)
fileFileYesFile to upload. Max 50MB. CSV, XLSX, XLS, JSON, PDF, TXT, MD, PARQUET.
curl -X POST https://getqueryly.com/api/data-scientist/upload \
  -F "session_id=ds_1720000000_abc12" \
  -F "file=@sales_data.csv"

Response

{
  "session_id": "ds_1720000000_abc12",
  "load_info": {
    "rows": 4520,
    "columns": 12,
    "column_names": ["date", "region", "product", "revenue", ...],
    "dtypes": {"date": "object", "revenue": "float64", ...}
  },
  "overview": "Dataset Loaded: 4,520 rows and 12 columns..."
}

Query Data

POST /api/data-scientist/query

Ask a natural language question about your data. The AI writes and executes real Python code to produce results with charts.

ParamTypeRequiredDescription
session_idstringYesSession ID from upload
querystringYesNatural language question
curl -X POST https://getqueryly.com/api/data-scientist/query \
  -F "session_id=ds_1720000000_abc12" \
  -F "query=Show average salary by department as a bar chart"

Response

{
  "text": "The average salary by department is:\n- Engineering: $95,400\n- Marketing: $72,300\n- Sales: $68,100",
  "charts": ["/outputs/ds_1720000000_abc12/salary_bar_chart.png"],
  "code_executed": true,
  "session_id": "ds_1720000000_abc12"
}

Generate Code

POST /api/data-scientist/generate

Generate Python analysis code without executing it. Useful for previewing what the AI would do.

ParamTypeRequiredDescription
session_idstringYesSession ID from upload
querystringYesWhat to generate code for

Health Check

GET /api/data-scientist/health/{session_id}

Run a data quality health check. Scores completeness, consistency, accuracy, and timeliness across all dimensions.

curl https://getqueryly.com/api/data-scientist/health/ds_1720000000_abc12

Response

{
  "overall_score": 82,
  "dimensions": {
    "completeness": {"score": 85, "detail": "3.2% missing values"},
    "consistency": {"score": 90, "detail": "No type mismatches"},
    "accuracy": {"score": 78, "detail": "2 outlier regions detected"},
    "timeliness": {"score": 75, "detail": "Data spans 2023-2025"}
  },
  "summary": "Your data is in good shape with minor issues.",
  "fixes": ["Fill 145 missing email values", "Review 12 salary outliers"]
}

Insights

GET /api/data-scientist/insights/{session_id}

Mine actionable insights from your data. Finds correlations, trends, anomalies, and patterns automatically.

curl https://getqueryly.com/api/data-scientist/insights/ds_1720000000_abc12

Data Guardian (Autonomous Analysis)

GET /api/data-scientist/autonomous/{session_id}

Tell-Me-What-Matters (no question needed): We scan your file the second you upload: what's wrong, what's hiding, what's next - and explain it in plain English with a chart. We tell you first, without you needing to ask.

curl https://getqueryly.com/api/data-scientist/autonomous/ds_1720000000_abc12

Response

{
  "pulse": {
    "alerts": [
      {"severity": "critical", "type": "missing_crisis", "title": "email is 45% missing", "action": "Drop email or use advanced imputation."},
      {"severity": "warning", "type": "outlier", "title": "Unusual values in revenue: 12 outliers (8.2%)"}
    ],
    "overall_health": {"score": 72, "label": "Good", "detail": "Minor issues detected."},
    "summary": {"total": 5, "critical": 1, "warnings": 2, "info": 2}
  },
  "discoveries": {
    "discoveries": [
      {"type": "strong_correlation", "title": "revenue and cost are strongly positively correlated", "detail": "r = 0.847"},
      {"type": "category_pattern", "title": "'Region A' has 34% more revenue than 'Region B'"}
    ],
    "total": 3
  },
  "prophets": {
    "predictions": [
      {"type": "trend_forecast", "title": "revenue is projected to increase by 12%", "detail": "Current: 1250. Predicted next: 1400 (R² = 0.89)"},
      {"type": "acceleration", "title": "cost is accelerating (45% change)"}
    ],
    "total": 2
  },
  "narrative": "Data Health: Good (72/100)\nALERT: 1 critical issue(s) detected.\nHidden patterns found:\n  - revenue and cost are strongly positively correlated\nForecasts:\n  - revenue is projected to increase by 12%",
  "metadata": {"filename": "sales.csv", "rows": 500, "columns": 12, "analysis_time": 1.23}
}

Multi-Analyst Reports

POST /api/data-scientist/swarm

Deploy multiple AI analyst personas. Each analyzes independently, then findings are cross-validated and consolidated.

ParamTypeRequiredDescription
session_idstringYesSession ID from upload
querystringYesAnalysis question for the swarm
depthstringNoquick, standard, or deep (default: standard)
curl -X POST https://getqueryly.com/api/data-scientist/swarm \
  -F "session_id=ds_1720000000_abc12" \
  -F "query=Analyze this data thoroughly and provide key insights" \
  -F "depth=deep"

Response

{
  "persona_names": ["Statistician", "BI Analyst", "Domain Expert"],
  "persona_results": {
    "statistician": {"name": "Statistician", "output": "Revenue follows a right-skewed distribution..."},
    "bi_analyst": {"name": "BI Analyst", "output": "Q4 shows 23% growth over Q3..."},
    "domain_expert": {"name": "Domain Expert", "output": "The engineering department drives 62%..."}
  },
  "consensus": {"text": "Key finding: Revenue is growing 15% QoQ driven by..."}
}

Available Personas

GET /api/data-scientist/personas

List all available analyst personas and their roles.

PersonaRole
statisticianStatistical analysis, distributions, significance tests
bi_analystBusiness intelligence, KPIs, revenue drivers
data_engineerData quality, missing values, schema validation
domain_expertDomain-specific insights and recommendations
economistPricing, optimization, market dynamics

Kaggle Dataset Explorer

Search and load 200K+ public datasets from Kaggle directly via the API. Requires Kaggle API credentials configured on the server.

GET /api/kaggle/status

Check if Kaggle API is configured.

curl https://getqueryly.com/api/kaggle/status

# Response
{"configured": true}
GET /api/kaggle/search?q={query}&page={page}

Search Kaggle datasets by keyword. Returns 10 results per page with license info.

curl "https://getqueryly.com/api/kaggle/search?q=world+population&page=1"

# Response
{
  "results": [
    {
      "ref": "iamsouravbanerjee/world-population-dataset",
      "title": "World Population Dataset",
      "description": "Global Headcount by Country/Territory",
      "license": "Other (specified in description)",
      "downloads": 89310,
      "votes": 768,
      "files_count": 1,
      "tags": ["people", "tabular", "beginner"]
    }
  ],
  "query": "world population",
  "page": 1
}
POST /api/kaggle/load

Download a Kaggle dataset and create an analysis session. Returns session_id ready for queries.

curl -X POST https://getqueryly.com/api/kaggle/load \
  -H "Content-Type: application/json" \
  -d '{"dataset": "iamsouravbanerjee/world-population-dataset"}'

# Response
{
  "session_id": "kgl_abc123...",
  "load_info": {"rows": 234, "columns": 15},
  "dataset": "iamsouravbanerjee/world-population-dataset",
  "overview": "Loaded Kaggle dataset: iamsouravbanerjee/world-population-dataset"
}

License Notice: Datasets are subject to their original license. Check the license field in search results. CC0, MIT, Apache licenses allow commercial use. CC BY-NC licenses prohibit commercial use. Always verify before using data commercially.

List Sessions

GET /api/sessions

List all active sessions for the current user.

Session History

GET /api/sessions/{session_id}/history

Get query history for a session.

Delete Session

DELETE /api/data-scientist/session/{session_id}

Delete a session and all its data.

User Info

GET /api/auth/me

Get current user info. Requires Bearer token.

curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://getqueryly.com/api/auth/me

Response

{
  "uid": "abc123",
  "email": "[email protected]",
  "displayName": "John",
  "provider": "password",
  "tier": "free",
  "dailyLimit": 10
}

API Keys

POST /api/keys/generate

Generate a new API key. Requires Bearer token.

GET /api/keys

List all API keys for the current user.

POST /api/keys/{key_hash}/revoke

Revoke an API key.

POST /api/keys/{key_hash}/rotate

Rotate an API key (generates a new key, invalidates the old one).

DELETE /api/keys/{key_hash}

Permanently delete a revoked or expired key. Active keys must be revoked first.

Pricing

GET /api/pricing

Get all pricing plans and pay-as-you-go options.

curl https://getqueryly.com/api/pricing

Usage Limits

GET /api/makes/limits

Check current usage and remaining daily limit.

curl https://getqueryly.com/api/makes/limits

Response

{
  "tier": "free",
  "limit": 10,
  "used": 3,
  "remaining": 7,
  "balance": 0,
  "total_available": 7
}
GET /api/makes/stats

Get detailed usage statistics.

Payments

getqueryly uses a secure payment gateway for payments. All amounts are in GHS (Ghanaian Cedis).

POST /api/pay/initialize

Initialize a payment for subscription or pay-as-you-go credits.

POST /api/pay/verify

Verify a completed payment and activate subscription/credits.

AI Tool Integration

getqueryly connects to AI coding tools and assistants, letting them upload, query, and analyze your data directly.

Endpoint: https://getqueryly.com/mcp/sse

Available Tools

ToolDescriptionCost
chatChat with AI, generate content, search web (MCP: ai_chat)1 Make
ds_uploadUpload a data file for analysisFree
ds_queryAsk a natural language question about your data1 Make
ds_healthRun a data quality health check (MCP: ds_health_check)2 Makes
ds_insightsMine patterns, anomalies, trends, correlations3 Makes
ds_swarm_quickMulti-analyst report, quick (3 analysts)5 Makes
ds_swarm_fullMulti-analyst report, full (5 analysts)8 Makes
ds_reportGenerate PDF report from analysis3 Makes
ds_test_recommendAI picks and runs the right statistical test (MCP: smart_test)1 Make
ds_interviewAsk a specific analyst persona2 Makes
ds_autonomousGuardian autonomous analysis5 Makes
ds_dashboardExecutive dashboard with KPIs and charts2 Makes
ds_notebookData notebook overview (stats, quality, correlations)2 Makes
ds_elasticityPricing sensitivity analysis1 Make
ds_graphKnowledge graph build and query1 Make
visualsAuto visuals, any chart type (MCP: chart)2 Makes
diagramCreate flowchart or org chart1 Make
infographicProfessional infographic with stats1 Make
kaggle_searchSearch 200K+ Kaggle datasetsFree
kaggle_loadDownload Kaggle dataset + create sessionFree
web_searchSearch the web for context2 Makes
get_usageCheck your Makes balance and limitsFree
get_costsGet the full cost tableFree

Connect Your AI Tools

Add getqueryly to your AI tool using this configuration:

{
  "mcpServers": {
    "getqueryly": {
      "url": "https://getqueryly.com/mcp/sse",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Chat

POST /api/chat

Send a message to the AI chat. Context-aware conversations about your data.

GET /api/chat/history

Get chat history for the current session.

Service Health

GET /health

Check service health, uptime, and system status.

curl https://getqueryly.com/health

Response

{
  "status": "ok",
  "service": "getqueryly",
  "version": "2.0",
  "firebase": "connected",
  "queue": {"waiting": 0, "running": 0, "capacity": 3},
  "disk_gb": 65.4,
  "uptime": "active"
}