---
title: "Data extraction"
method: POST
path: "/extract"
tags: ["extract"]
---

# Data extraction

`POST /extract`

Performs data extraction using LLM based on the specified data source, filter conditions, and JSON schema. Retrieves chunked data and uses the schema to extract and return the result as JSON via LLM.

Required roles: All, App

## Request body

- ExtractRequest
  - `tags` string[]
  - `tag_ids` string[]
  - `tag_filter_logic` 'AND' | 'OR' — Logical operator for combining filter conditions
  - `source_types` SourceType[]
  - `file_types` FileType[]
  - `date_from` integer — Start date for content search (Unix timestamp in seconds)
  - `date_to` integer — End date for content search (Unix timestamp in seconds)
  - `domains` string[]
  - `metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
    - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
    - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
      - `key` string, required — Metadata key
      - `val` unknown
      - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
      - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
      - `min` unknown
      - `max` unknown
    - `groups` MetadataFilterGroup[] — Nested subgroups
  - `source_metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
    - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
    - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
      - `key` string, required — Metadata key
      - `val` unknown
      - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
      - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
      - `min` unknown
      - `max` unknown
    - `groups` MetadataFilterGroup[] — Nested subgroups
  - `chunk_metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
    - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
    - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
      - `key` string, required — Metadata key
      - `val` unknown
      - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
      - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
      - `min` unknown
      - `max` unknown
    - `groups` MetadataFilterGroup[] — Nested subgroups
  - `metadata_filter` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
    - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
    - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
      - `key` string, required — Metadata key
      - `val` unknown
      - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
      - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
      - `min` unknown
      - `max` unknown
    - `groups` MetadataFilterGroup[] — Nested subgroups
  - `use_postfilter` boolean — Whether to bypass LanceDB prefilter and apply WHERE after the vector search (IVF_PQ) returns top-K. Significantly faster for broad filters that cover most of the table, but may return fewer than `limit` results when the hit rate is low.
  - `limit` integer
  - `offset` integer
  - `authz_policy` string — (reserved for future use) Name of the registered authz policy to evaluate when retrieving content. Defaults to the reserved "default" policy when omitted. Ignored when authz is disabled.
  - `principal_id` string — Identifier of the end-user (principal) on whose behalf this request is made. Used to look up the principal's authz subject attributes for policy evaluation. When omitted, subject attributes are empty (most restrictive). Ignored when authz is disabled.
  - `schema` object, required — JSON Schema for the data to be extracted.
  - `prompt` string — Additional prompt for the LLM (optional, if not specified, a default prompt in Japanese will be used).
  - `use_related` boolean — Whether to search for and use related content
  - `related_filter` object
    - `tags` string[]
    - `tag_ids` string[]
    - `tag_filter_logic` 'AND' | 'OR' — Logical operator for combining filter conditions
    - `source_types` SourceType[]
    - `file_types` FileType[]
    - `date_from` integer — Start date for content search (Unix timestamp in seconds)
    - `date_to` integer — End date for content search (Unix timestamp in seconds)
    - `domains` string[]
    - `metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
      - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
      - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
        - `key` string, required — Metadata key
        - `val` unknown
        - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
        - `min` unknown
        - `max` unknown
      - `groups` MetadataFilterGroup[] — Nested subgroups
    - `source_metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
      - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
      - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
        - `key` string, required — Metadata key
        - `val` unknown
        - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
        - `min` unknown
        - `max` unknown
      - `groups` MetadataFilterGroup[] — Nested subgroups
    - `chunk_metadata` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
      - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
      - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
        - `key` string, required — Metadata key
        - `val` unknown
        - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
        - `min` unknown
        - `max` unknown
      - `groups` MetadataFilterGroup[] — Nested subgroups
    - `metadata_filter` MetadataFilterGroup — (reserved for future use) Filter group with nested structure. Supports combining filters with AND/OR logic.
      - `logic` 'AND' | 'OR' — Logical operator for combining filter conditions
      - `filters` MetadataFilter[] — Filters within this group (combined using the logic operator)
        - `key` string, required — Metadata key
        - `val` unknown
        - `type` 'string' | 'integer' | 'float' | 'date' | 'datetime', required — Data type of the metadata value
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required — Comparison operator
        - `min` unknown
        - `max` unknown
      - `groups` MetadataFilterGroup[] — Nested subgroups
    - `use_postfilter` boolean — Whether to bypass LanceDB prefilter and apply WHERE after the vector search (IVF_PQ) returns top-K. Significantly faster for broad filters that cover most of the table, but may return fewer than `limit` results when the hit rate is low.
    - `limit` integer
    - `offset` integer

## Response `200`

Successful extraction

- Extract200Response
  - `created` integer, required — 抽出実行時刻（Unix timestamp）
  - `result` ExtractResult, required — Extraction result as a JSON object conforming to the provided schema.

## Other responses

- `400` — Bad Request - The request was malformed or invalid
- `401` — Unauthorized - Authentication failed
- `403` — Forbidden - Insufficient permissions
- `429` — Too Many Requests - Rate limit exceeded
- `500` — Internal Server Error

---

[API](https://skmtc.net/qlonolink/apis/qaip-apis.md) · [All operations](https://skmtc.net/qlonolink/apis/qaip-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/qlonolink/qaip-apis/revisions/f5f5994dfe05/schema)
