---
title: "Compress Query Specific"
method: POST
path: "/api/compress/question-specific/"
tags: ["Compression"]
---

# Compress Query Specific

`POST /api/compress/question-specific/`

Compress single context with question-aware filtering.

For multiple context+query pairs, use the /batch endpoint.

## Headers

- `X-API-Key` string, required

## Request body

- QuerySpecificCompressionRequest — Request for single question-specific compression. Use /batch endpoint for multiple context+query pairs. Backbone: GemFilter
  - `context` string, nullable — Context text to compress (single string). If null or empty, the endpoint returns an empty compressed_context with zero tokens and no billing — no error is raised.
  - `compression_model_name` string, required — Compression model to use (e.g., 'latte_v1')
  - `query` string, required — Query for context-aware filtering (REQUIRED)
  - `target_compression_ratio` number, nullable — Target ratio: 0-1 (strength) or >1 for factor (e.g., 2=2x). Max 200.
  - `coarse` boolean — Use coarse-grained compression (paragraph-level). Default: True.
  - `heuristic_chunking` boolean — Use heuristic chunking for better structure preservation. Default: False.
  - `disable_placeholders` boolean — Disable placeholder tokens in compressed output. Default: False.
  - `dynamic` boolean — latte_v2 only. Use Kneedle elbow selection instead of a fixed ratio; overrides target_compression_ratio when True.
  - `dynamic_min_ratio` number, nullable — latte_v2 only. Floor on compression when dynamic=True.
  - `dynamic_max_ratio` number, nullable — latte_v2 only. Ceiling on compression when dynamic=True.
  - `source` 'demo' | 'extension' | 'sdk:python' | 'sdk:typescript' | 'sdk:curl' | 'gateway:unknown' | 'gateway:anthropic' | 'gateway:openai' | 'gateway:gemini' | 'integration:litellm' | 'integration:hermes' — Source of an API request. Format: source[:detail] - demo, extension: no detail needed - sdk:python, sdk:typescript, sdk:curl - gateway:anthropic, gateway:openai, gateway:gemini - integration:litellm, integration:hermes

## Response `200`

Successful Response

- QuerySpecificCompressionResponse
  - `success` boolean
  - `message` string, nullable
  - `data` CompressionResult — Canonical single-context compression result. Used by query-specific routes, demo, and agentic responses.
    - `original_tokens` integer, required — Token count of original context
    - `compressed_tokens` integer, required — Token count after compression
    - `target_compression_ratio` number, nullable — User-requested compression ratio (if provided)
    - `actual_compression_ratio` number, required — Actual achieved compression ratio (0-1)
    - `tokens_saved` integer, required — Number of tokens saved
    - `duration_ms` integer, required — Processing time in milliseconds
    - `compressed_context` string, required — Compressed context text

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/compresr/apis/compresr-platform-api.md) · [All operations](https://skmtc.net/compresr/apis/compresr-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/compresr/compresr-platform-api/revisions/93ee959dfa51/schema)
