---
title: "Get system configuration defaults."
method: GET
path: "/config/defaults"
tags: ["system"]
---

# Get system configuration defaults.

`GET /config/defaults`

Static values the server fills in for unset configuration fields. Use as form placeholders so users see real defaults instead of "default" text.

## Response `200`

OK

- HandlerConfigDefaultsResponse
  - `buffer` object
    - `capacity` integer
  - `dvr` object
    - `segment_duration` integer — SegmentDuration is in seconds.
    - `storage_path_template` string — StoragePathTemplate uses {streamCode} as the placeholder for the stream code — frontend must substitute it client-side.
  - `hook` object
    - `batch_flush_interval_sec` integer
    - `batch_max_items` integer — Batch* defaults apply to HTTP hooks only — file hooks always write one event per line. The dispatcher's mergeBatchConfig uses the same Default* constants, so the API surface and the runtime fallback can never drift.
    - `batch_max_queue_items` integer
    - `max_retries` integer
    - `timeout_sec` integer
  - `ingestor` object
    - `hls_max_segment_buffer` integer
    - `hls_playlist_timeout_sec` integer
    - `hls_segment_timeout_sec` integer
    - `rtmp_timeout_sec` integer — Per-protocol pull timeouts the server fills when a stream's `input.net.timeout_sec` is left zero. UI uses these as the placeholder value on the per-input Timeout (s) field, picking the right one based on the input URL scheme.
    - `rtsp_timeout_sec` integer
  - `listeners` object
    - `rtmp` HandlerListenerDefaults
      - `listen_host` string
      - `port` integer
    - `rtsp` HandlerRtspListenerDefaults
      - `listen_host` string
      - `port` integer
      - `transport` string
    - `srt` HandlerSrtListenerDefaults
      - `latency_ms` integer
      - `listen_host` string
      - `port` integer
  - `manager` object
    - `input_packet_timeout_sec` integer
  - `publisher` object
    - `dash` HandlerLiveSegmentDefaults
      - `live_ephemeral` boolean
      - `live_history` integer
      - `live_segment_sec` integer
      - `live_window` integer
    - `hls` HandlerLiveSegmentDefaults
      - `live_ephemeral` boolean
      - `live_history` integer
      - `live_segment_sec` integer
      - `live_window` integer
  - `push` object
    - `retry_timeout_sec` integer
    - `timeout_sec` integer
  - `transcoder` object
    - `audio` object
      - `bitrate_k` integer
      - `codec` 'aac' | 'mp2a' | 'mp3' | 'ac3' | 'eac3' | 'copy'
    - `global` object
      - `deviceid` integer
      - `hw` 'none' | 'nvenc' | 'vaapi' | 'videotoolbox' | 'qsv'
    - `video` object
      - `bitrate_k` integer
      - `codec` string — Codec is the codec family used when the user leaves VideoProfile.Codec empty. EncoderByCodecHW resolves it (or any explicit codec) to the actual FFmpeg encoder name based on the stream's Global.HW selection — frontend looks up `EncoderByCodecHW[codec][hw]` to render the placeholder.
      - `encoder_by_codec_hw` object
      - `resize_mode` 'pad' | 'crop' | 'stretch' | 'fit'

---

[API](https://skmtc.net/datvietvac-techhub/apis/open-streamer-api.md) · [All operations](https://skmtc.net/datvietvac-techhub/apis/open-streamer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/datvietvac-techhub/open-streamer-api/versions/9f723293b698/schema)
