QuestDB website screenshot

QuestDB

QuestDB is a high-performance open-source time-series database. It exposes three programmatic surfaces — an HTTP REST API for SQL queries and CSV import/export, the InfluxDB Line Protocol (ILP) over TCP and HTTP for high-throughput ingestion, and the PostgreSQL wire protocol for compatibility with existing tooling. QuestDB is offered as open-source, Enterprise (self-hosted) and Bring-Your-Own-Cloud (BYOC).

4 APIs 0 Features
DatabaseTime-SeriesSQLOpen SourcePerformanceILPPostgreSQL

APIs

QuestDB HTTP REST API

HTTP REST endpoints for SQL execution (/exec), CSV import (/imp), CSV export (/exp), health/metrics (/chk, /metrics) and runtime settings (/settings). Default port 9000.

QuestDB ILP TCP Ingestion

InfluxDB Line Protocol over TCP for high-throughput, low-latency time-series ingestion. Default port 9009. Supports authentication and TLS in Enterprise.

QuestDB ILP HTTP Ingestion

Influx Line Protocol over HTTP /write endpoint for ingestion clients that prefer HTTP (TLS, auth and ack semantics easier than the TCP variant). Served on the same port (9000) a...

QuestDB PostgreSQL Wire Interface

PostgreSQL wire-protocol compatibility for queries via psql, JDBC and any Postgres-compatible client. Default port 8812. Supports a subset of Postgres features sufficient for SQ...

Collections

Pricing Plans

Questdb Plans Pricing

4 plans

PLANS

Rate Limits

Questdb Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
💰
Pricing
Pricing
👥
GitHub
GitHub
🔗
BYOC
BYOC
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: QuestDB HTTP REST API
  version: 1.0.0
items:
- info:
    name: Execute a SQL statement
    type: http
  http:
    method: GET
    url: http://{host}:{port}/exec
    params:
    - name: query
      value: ''
      type: query
      description: SQL statement to execute (URL-encoded).
    - name: limit
      value: ''
      type: query
      description: Optional row range, for example `0,1000`.
    - name: count
      value: ''
      type: query
      description: Include total row count in the response.
    - name: nm
      value: ''
      type: query
      description: Skip metadata in the response when true.
    - name: timings
      value: ''
      type: query
      description: Include execution timings in the response.
  docs: Compiles and executes a SQL statement passed as the `query` URL parameter and returns JSON-formatted results.
- info:
    name: Import a CSV file
    type: http
  http:
    method: POST
    url: http://{host}:{port}/imp
    params:
    - name: name
      value: ''
      type: query
      description: Target table name (defaults to the uploaded file name).
    - name: overwrite
      value: ''
      type: query
      description: When true, drop and recreate the target table.
    - name: forceHeader
      value: ''
      type: query
      description: Treat the first row as a header row.
    - name: timestamp
      value: ''
      type: query
      description: Name of the designated timestamp column.
    - name: partitionBy
      value: ''
      type: query
      description: Partition strategy (NONE, HOUR, DAY, WEEK, MONTH, YEAR).
    - name: fmt
      value: ''
      type: query
      description: Response format, for example `json` or `tabular`.
    body:
      type: multipart-form
      data:
      - name: schema
        type: text
        value: ''
      - name: data
        type: text
        value: ''
  docs: Imports a CSV file into a QuestDB table using a multipart form upload.
- info:
    name: Export query results as CSV
    type: http
  http:
    method: GET
    url: http://{host}:{port}/exp
    params:
    - name: query
      value: ''
      type: query
      description: SQL statement to execute (URL-encoded).
    - name: limit
      value: ''
      type: query
      description: Optional row range, for example `0,1000`.
  docs: Executes a SQL statement and streams the result set as CSV.
- info:
    name: Check whether a table exists
    type: http
  http:
    method: GET
    url: http://{host}:{port}/chk
    params:
    - name: f
      value: ''
      type: query
      description: Response format, typically `json`.
    - name: j
      value: ''
      type: query
      description: Table name to check.
  docs: Returns whether the supplied table exists in the database.
- info:
    name: Ingest data via InfluxDB Line Protocol over HTTP
    type: http
  http:
    method: POST
    url: http://{host}:{port}/write
    params:
    - name: precision
      value: ''
      type: query
      description: Timestamp precision (n, u, ms, s).
  docs: Accepts InfluxDB Line Protocol payloads for high-throughput time-series ingestion. Served on the same HTTP port as
    the REST API.
- info:
    name: Return effective runtime settings
    type: http
  http:
    method: GET
    url: http://{host}:{port}/settings
  docs: Returns the current server runtime settings as JSON.
bundled: true