> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aiql.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Query



## OpenAPI

````yaml https://api.aiql.io/openapi.json post /queries
openapi: 3.1.0
info:
  title: aiql-api
  version: 0.1.0
servers:
  - url: https://api.aiql.io
security: []
tags:
  - name: Health
    description: Service health checks.
  - name: Workspaces
    description: Workspace management.
  - name: Ingestions
    description: Document ingestion pipeline.
  - name: Queries
    description: Natural-language queries.
  - name: Sources
    description: Ingested sources and their contents.
  - name: Requests
    description: Source addition/removal requests awaiting review.
  - name: Request Changes
    description: Individual source add/remove changes on a request.
  - name: Request Reviews
    description: Reviews of a request, including draft and submit.
  - name: Request Comments
    description: Comments on a request review.
  - name: Canvases
    description: Brainstorm canvases.
  - name: Dashboards
    description: Dashboards.
  - name: Presentations
    description: Slide presentations.
  - name: Tools
    description: Standalone convert/split/shape/extract tools.
  - name: Connectors
    description: Connector catalog and connect flows.
  - name: Connections
    description: Workspace connector connections.
paths:
  /queries:
    post:
      tags:
        - Queries
      summary: Create Query
      operationId: create_query_queries_post
      parameters:
        - name: AiQL-Workspace
          in: header
          required: true
          schema:
            type: string
            description: ID of the workspace the request operates on.
            title: Aiql-Workspace
          description: ID of the workspace the request operates on.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Query'
        '401':
          description: 'Authentication failed: missing or invalid API key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |-
            curl -X POST https://api.aiql.io/queries \
              -H "Authorization: Bearer $AIQL_API_KEY" \
              -H "AiQL-Workspace: $AIQL_WORKSPACE_ID" \
              -H "Content-Type: application/json" \
              -d '{"content": "count events grouped by day"}'
        - lang: python
          label: Python SDK
          source: |-
            import os
            from aiql import AiQL

            client = AiQL(api_key=os.environ["AIQL_API_KEY"])

            query = client.queries.create(
                workspace_id="ws_3a1b",
                content="count events grouped by day",
            )
        - lang: typescript
          label: TypeScript SDK
          source: |-
            import { AiQL } from "@aiql.io/sdk";

            const client = new AiQL({ apiKey: process.env.AIQL_API_KEY });

            const query = await client.queries.create({
              workspaceId: "ws_3a1b",
              content: "count events grouped by day",
            });
components:
  schemas:
    QueryCreate:
      properties:
        content:
          type: string
          title: Content
          description: Natural-language content of the query.
      type: object
      required:
        - content
      title: QueryCreate
    Query:
      properties:
        id:
          type: string
          title: Id
          description: Unique identifier of the query.
        content:
          type: string
          title: Content
          description: Natural-language content of the query.
        output:
          anyOf:
            - type: string
            - type: 'null'
          title: Output
          description: Result the query produced.
        steps:
          items:
            anyOf:
              - $ref: '#/components/schemas/QueryTextStep'
              - $ref: '#/components/schemas/QueryToolStep'
          type: array
          title: Steps
          description: >-
            Ordered steps taken while working toward the final output. Each step
            is either an assistant text message ({"text": ...}) or a tool
            invocation ({"tool": ...}). Reasoning parts, tool arguments, and
            tool outputs are not included, and the final output is not repeated.
        status:
          type: string
          title: Status
          description: 'Status of the query: PENDING, PROCESSING, PROCESSED, or FAILED.'
      type: object
      required:
        - id
        - content
        - status
      title: Query
    ErrorResponse:
      type: object
      title: ErrorResponse
      properties:
        detail:
          type: string
          title: Detail
      required:
        - detail
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    QueryTextStep:
      properties:
        text:
          type: string
          title: Text
          description: Assistant text message produced while working toward the output.
      type: object
      required:
        - text
      title: QueryTextStep
    QueryToolStep:
      properties:
        tool:
          type: string
          title: Tool
          description: Human-readable name of a tool the assistant invoked.
      type: object
      required:
        - tool
      title: QueryToolStep
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      description: API key passed as a Bearer token in the Authorization header.
      scheme: bearer

````