Summary

The Avolites D9-330 is a flagship lighting console running the Titan software. This spec covers the Avolites/Titan HTTP web API, which exposes Get/Set property commands, Script method calls, and Handle requests for reading console state. The API communicates over HTTP using JSON-formatted responses.

Transport

protocols:
  - http
addressing:
  port: 4430
  base_url: /titan/
auth:
  type: none  # inferred: no auth procedure in source

Traits

# - queryable       (Get commands and Handle requests return values)
# - levelable       (SetMasterLevel, FirePlaybackAtLevel accept level)
traits:
  - queryable  # inferred from Get and Handle request examples
  - levelable  # inferred from level/setLevel command examples

Actions

actions:
  - id: get_property
    label: Get Property Value
    kind: query
    command: "GET /titan/get/{propertyPath}"
    params:
      - name: propertyPath
        type: string
        description: Case-sensitive dot/slash path of the property to read (e.g. System/SoftwareVersion, Show/ShowName, Titan/DeviceInfo)
    notes: "Example: http://{host}:4430/titan/get/System/SoftwareVersion returns e.g. \"14.0\""

  - id: set_property
    label: Set Property Value
    kind: action
    command: "POST /titan/set/{propertyPath}"
    params:
      - name: propertyPath
        type: string
        description: Case-sensitive property path to set (e.g. Fixtures/ShowDmxAddress)
      - name: value
        type: string
        description: Value to assign, sent in the POST body (e.g. True/False)
    notes: "Example POST body sets Fixtures/ShowDmxAddress to False"

  - id: script_process
    label: Script - Playbacks Select Process
    kind: action
    command: "GET /titan/script/Playbacks/Select/Process?string={string}&int={int}"
    params:
      - name: string
        type: string
        description: String parameter passed to the Process script
      - name: int
        type: integer
        description: Integer parameter passed to the Process script
    notes: "Fires an event based on the supplied string and integer"

  - id: script_set_master_level
    label: Script - Masters SetMasterLevel
    kind: action
    command: "GET /titan/script/Masters/SetMasterLevel?string={playback}&int={index}&level={level}&float={float}&bool={bool}"
    params:
      - name: playback
        type: string
        description: Playback identifier string
      - name: index
        type: integer
        description: Master index
      - name: level
        type: number
        description: Target level (0.5 = 50%, 1.0 = 100%); mutually exclusive with levelDelta
      - name: float
        type: number
        description: Float parameter (example uses 1.0)
      - name: bool
        type: boolean
        description: Boolean parameter
    notes: "Supports level (absolute) or levelDelta (relative add) variants"

  - id: script_fire_playback_at_level
    label: Script - Playbacks FirePlaybackAtLevel
    kind: action
    command: "GET /titan/script/Playbacks/FirePlaybackAtLevel?{idParam}={id}&level={level}&bool={refire}"
    params:
      - name: idParam
        type: string
        description: Identifier type, either titanId or userNumber
      - name: id
        type: integer
        description: titanId or userNumber of the playback
      - name: level
        type: number
        description: Level to fire at (0.5 = 50%, 1.0 = 100%)
      - name: refire
        type: boolean
        description: If true, kills the playback before firing
    notes: "Forces playback to a level; loads it if not loaded. Void return."

  - id: script_kill_playback
    label: Script - Playbacks KillPlayback
    kind: action
    command: "GET /titan/script/Playbacks/KillPlayback?{idParam}={id}"
    params:
      - name: idParam
        type: string
        description: Identifier type, either titanId or userNumber
      - name: id
        type: integer
        description: titanId or userNumber of the playback to kill
    notes: "Kills the specified playback. Void return."

  - id: script_toggle_latch_playback
    label: Script - Playbacks ToggleLatchPlayback
    kind: action
    command: "GET /titan/script/Playbacks/ToggleLatchPlayback?{idParam}={id}"
    params:
      - name: idParam
        type: string
        description: Identifier type, either titanId or userNumber
      - name: id
        type: integer
        description: titanId or userNumber of the playback to toggle
    notes: "Displays the contents of a cue; for a cue list moves on to the next cue and displays it. Void return."

  - id: script_kill_all_playbacks
    label: Script - Playbacks KillAllPlaybacks
    kind: action
    command: "GET /titan/script/Playbacks/KillAllPlaybacks"
    params: []
    notes: "Deactivates all playbacks. No parameters. Void return."

  - id: get_page_handles
    label: Get Page Handles
    kind: query
    command: "GET /titan/handles/{group}/{pageIndex}"
    params:
      - name: group
        type: string
        description: Group name; capitalisation must match the console (e.g. Colours, Fixtures)
      - name: pageIndex
        type: integer
        description: Page index, starting at 0
    notes: "Returns all handles on the specified page of a group, JSON array"

  - id: get_group_handles
    label: Get Group Handles
    kind: query
    command: "GET /titan/handles/{group}"
    params:
      - name: group
        type: string
        description: Group name; capitalisation must match the console (e.g. Fixtures)
    notes: "Returns handles from all pages of the specified group, JSON array"

  - id: get_all_handles
    label: Get All Handles
    kind: query
    command: "GET /titan/handles"
    params: []
    notes: "Returns every programmed handle on the console across all groups. Response can be very large."

  - id: get_titan_device_info
    label: Get Titan DeviceInfo
    kind: query
    command: "GET /titan/get/Titan/DeviceInfo"
    params: []
    notes: "Returns the status of all connections to the console in JSON format (property of the Titan provider)"

Feedbacks

feedbacks:
  - id: get_response_value
    type: string
    description: Plain-value response from a Get property request (e.g. Titan version, show name)
  - id: handle_json
    type: object
    description: JSON array of handle objects returned by handle requests. Each item contains handleLocation {group,index,page}, properties [{Key,Value}], titanId, type, Active, Legend
  - id: device_info
    type: object
    description: JSON describing all connection types/status of the console (Titan/DeviceInfo)
  - id: script_result
    type: string
    description: For successful Script requests the console returns the result, or a blank page if there is no result. Invalid requests return an error message
# UNRESOLVED: exact error-message format not fully specified in source

Variables

variables:
  - id: system_software_version
    type: string
    description: Titan software version (read via System/SoftwareVersion)
  - id: show_name
    type: string
    description: Current show name (read via Show/ShowName)
  - id: show_dmx_address
    type: boolean
    description: Whether DMX address is shown on fixture buttons (set via Fixtures/ShowDmxAddress)
  - id: master_level
    type: number
    description: Master level (0.0-1.0), set/read via Masters/SetMasterLevel

Events

# UNRESOLVED: no unsolicited notification / push mechanism described in source.
# All responses are synchronous replies to HTTP Get/Script/Handle requests.

Macros

# UNRESOLVED: no multi-step sequences explicitly described in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. Do not infer.

Notes

  • The API uses HTTP port 4430 on all requests. All paths begin with /titan/.
  • Get requests use HTTP GET and can be issued from a browser address bar for testing.
  • Set requests use HTTP POST with the value in the message body; not testable from a plain browser address bar.
  • Script requests use HTTP GET with query parameters. Parameters are type-tagged (string=, int=, float=, bool=, level=, levelDelta=, titanId=, userNumber=). Parameter type names are case-sensitive.
  • Identifiers: titanId is a system-generated unique id (obtainable via Handle requests); userNumber is an assignable number. Either may be used where an Id is required.
  • A full function listing is referenced at https://api.avolites.com/19.2/api — not captured in this source excerpt.
  • Titan-specific parameter types documented: Level (absolute value), Level Delta (relative add), TitanId, User Number, plus basic Boolean/float/integer/string.
  • Console example IP used throughout the source is 10.0.0.1.

## Provenance

```yaml
source_domains:
  - api.avolites.com
source_urls:
  - https://api.avolites.com/19.2/
  - https://api.avolites.com/
retrieved_at: 2026-07-14T06:34:23.784Z
last_checked_at: 2026-07-21T20:25:43.525Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-07-21T20:25:43.525Z
matched_actions: 12
action_count: 12
confidence: medium
summary: "All 12 spec actions have literal HTTP command evidence in source excerpt; port 4430 and /titan/ base path verified; no auth required confirmed. (10 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "source documents the general Titan web API and never names the D9-330 model explicitly; coverage assumed applicable to D9-330 as a Titan console."
- "the source file is named \"..._serial.refined.md\" and the supplied known-protocol hint is RS-232C, but the refined source text describes only an HTTP web API on port 4430. No RS-232/serial command syntax is present in the source; serial transport is therefore not populated."
- "exact error-message format not fully specified in source"
- "no unsolicited notification / push mechanism described in source."
- "no multi-step sequences explicitly described in source"
- "source contains no safety warnings, interlock procedures, or"
- "model name \"D9-330\" not explicitly stated in source; source describes the generic Avolites/Titan web API applicable to Titan consoles."
- "complete provider/command catalogue not included in source — only Playbacks, Masters, and Titan providers partially documented. Full list at external URL api.avolites.com."
- "no RS-232/serial command syntax present despite source filename and protocol hint."
- "firmware / Titan version compatibility range not stated."
```

---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0