---
title: "List all topics"
method: GET
path: "/topics/details"
tags: ["Topics"]
---

# List all topics

`GET /topics/details`

## Query parameters

- `entity_type` string, nullable — Filter by entity type(s). Single value (e.g., 'sources') or comma-separated (e.g., 'sources,transforms'). Valid types: sources, destinations, transforms, pipelines, manual.
- `topic_id` string, nullable
- `partial_name` string, nullable — Topic id
- `page` integer
- `page_size` integer
- `entity_id` string, nullable — Filter by specific entity IDs (comma-separated list)
- `include_dlq` boolean — Include Dead Letter Queue (DLQ) topics in results. Set to false to exclude DLQ topics.
- `include_internal` boolean — Local/admin-app only: include Streamkap/KC internal topics (streamkap_signal, streamkap_state, KC offsets/configs/status) in the result. Internal topics carry connector='internal:<klass>'.
- `snapshot` string, nullable — Filter topics by snapshot status. Comma-separated for multiple statuses (e.g., 'running', 'completed,failed'). Valid statuses: running, completed, failed, pending, cancelled
- `eta` string, nullable — Filter by snapshot ETA in milliseconds. Format: 'operator:value' (e.g., 'gt:60000', 'lte:300000'). Valid operators: gt (>), lt (<), gte (>=), lte (<=), eq (=), ne (!=). Topics without ETA (null/0) are excluded when filtering.
- `timestamp_from` string, nullable — Start timestamp for filtering topics by activity period (ISO 8601 format)
- `timestamp_to` string, nullable — End timestamp for filtering topics by activity period (ISO 8601 format)
- `time_type` 'timeseries' | 'timesummary' | 'latest', nullable — Time aggregation type for filtering active topics (only applies when timestamp_from/to are specified)
- `value_format` string, nullable — Filter by serialization value format. Valid values: avro, json, json_schema, protobuf, string, bytearray. Case-insensitive. Omit or pass null to return all formats.
- `has_errors` boolean, nullable — Filter topics by error status. true = only topics with recordErrorTotal > 0, false = only topics with recordErrorTotal == 0, null/omit = return all topics.
- `orphaned` boolean, nullable — Filter by orphaned status. true = only topics with 0 destinations, false = only topics with destinations.
- `partition_skew` boolean, nullable — Filter by partition skew. true = only topics where max partition lag > 2x average.
- `sort` string, nullable — Sort field. Valid values: DB fields (name, connector, entity_type, entity_name), snapshot_status (sources only), or Kafka-admin fields (partition_count, replication_factor, retention_ms, lastMessageTimestamp).
- `sort_dir` 'asc' | 'desc'
- `tag_ids` string, nullable — Filter by tag IDs. Comma-separated list (e.g., 'tag1,tag2'). Use with tag_filter_operation to control AND/OR logic.
- `tag_filter_operation` 'and' | 'or', nullable — Tag filter logic: 'or' (default) matches any tag, 'and' matches all tags.

## Request body

- TopicDetailsReqBody — Body model for POST /topics/details/search requests. Supports large lists of entity IDs that would exceed URL length limits when using GET. Body parameters take precedence over query parameters when both are provided.
  - `entity_id` union — List of entity IDs (as array) or comma-separated string. Body takes precedence over query params.
    - string[]
    - string
  - `snapshot` union — List of snapshot statuses (as array) or comma-separated string. Body takes precedence over query params. Valid statuses: running, completed, failed, pending, cancelled
    - string[]
    - string
  - `value_format` string, nullable — Filter by serialization value format. Valid values: avro, json, json_schema, protobuf, string, bytearray. Case-insensitive. Body takes precedence over query params.
  - `has_errors` boolean, nullable — Filter topics by error status. true = only topics with errors, false = only topics without errors. Body takes precedence over query params.
  - `orphaned` boolean, nullable — Filter by orphaned status. true = only topics with 0 destinations, false = only topics with destinations. Body takes precedence over query params.
  - `partition_skew` boolean, nullable — Filter by partition skew. true = only topics where max partition lag > 2x average. Body takes precedence over query params.
  - `tag_ids` union — List of tag IDs (as array) or comma-separated string. Body takes precedence over query params.
    - string[]
    - string
  - `tag_filter_operation` 'and' | 'or', nullable — Tag filter logic: 'or' (default) matches any tag, 'and' matches all tags. Body takes precedence over query params.

## Response `200`

Successful Response

- TopicsDetailsRes
  - `page` integer — Current page number
  - `page_size` integer — Results per page
  - `total` integer, nullable — Total number of results
  - `has_next` boolean, nullable — Whether more pages exist
  - `result` TopicDetailsRes[], required
    - `id` string, required
    - `name` string, required
    - `entity` TopicDetailsEntity, required
      - `entity_type` 'sources' | 'destinations' | 'transforms' | 'pipelines' | 'manual', required — Enum for topic entity types (producer types).
      - `entity_id` string, required
      - `name` string, required
      - `connector` union, required
        - 'alloydb' | 'elasticsearch' | 'mongodbhosted' | 'mongodb' | 'sqlserveraws' | 'mariadb' | 'mysql' | 'postgresql' | 'oracle' | 'documentdb' | 'oracleaws' | 'kafkadirect' | 'redis' | 's3' | 'webhook' | 'zendesk_webhook' | 'salesforce_webhook' | 'shopify_webhook' | 'stripe_webhook' | 'db2' | 'dynamodb' | 'vitess' | 'planetscale' | 'supabase' | 'informix' — Available source connector types for CDC data ingestion. Includes relational databases (PostgreSQL, MySQL, SQL Server, Oracle), NoSQL databases (MongoDB, DynamoDB), and direct Kafka connections.
        - 'azblob' | 'clickhouse' | 'databricks' | 'mysql' | 'postgresql' | 'redshift' | 's3' | 'r2' | 'gcs' | 'motherduck' | 'weaviate' | 'pinecone' | 'httpsink' | 'sqlserver' | 'bigquery' | 'cockroachdb' | 'db2' | 'oracle' | 'redis' | 'snowflake' | 'starburst' | 'kafka' | 'kafkadirect' | 'iceberg' — Available destination connector types for data delivery. Supports data warehouses (Snowflake, BigQuery, Databricks), databases (ClickHouse, PostgreSQL), and object storage (S3, Iceberg).
        - 'fan_out' | 'sql_join' | 'enrich' | 'enrich_async' | 'map_filter' | 'toast_handling' | 'un_nesting' | 'rollup' | 'topic_router'
        - string
      - `topic_ids` string[], required
      - `topic_db_ids` string[], required
      - `display_name` string, required
      - `filtered_snapshot_language` string, nullable
    - `prefix` string, nullable
    - `serialization` TopicSerialization — Serialization format information for a topic. Topics inherit their serialization format from their producer (source/transform). Most Streamkap sources use Avro by default with Schema Registry.
      - `key_format` 'avro' | 'json' | 'json_schema' | 'protobuf' | 'string' | 'bytearray' | 'unknown' — Human-readable serialization format names for API responses.
      - `value_format` 'avro' | 'json' | 'json_schema' | 'protobuf' | 'string' | 'bytearray' | 'unknown' — Human-readable serialization format names for API responses.
      - `key_converter` string, nullable — Converter class for message keys
      - `value_converter` string, nullable — Converter class for message values
      - `schema_registry_enabled` boolean — Whether Schema Registry is used for this topic's serialization
    - `tags` string[], nullable — List of tag IDs assigned to this topic
    - `broker_only` boolean — True when this row was surfaced from a broker listing rather than the MongoDB `topics` collection (only possible with `include_internal=true`). The FE renders a badge so the user can tell Mongo-tracked topics apart from broker-only ones.

## Other responses

- `422` — Validation Error

---

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