speakers

Update Speaker Map Position

put/speakers/{speaker_id}/map-position

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/speakers/{speaker_id}/map-position
  • Auth
    HTTP bearer

Path parameters

speaker_idstring required

Request body

map_xnumber nullable

Normalized floor-plan x (0 = left edge, 1 = right edge). Null clears the floor-plan placement.

map_ynumber nullable

Normalized floor-plan y (0 = top edge, 1 = bottom edge). Null clears the floor-plan placement.

map_latnumber nullable

Geographic latitude. Null clears the geographic placement.

map_lngnumber nullable

Geographic longitude. Null clears the geographic placement.

map_location_labelstring nullable

Operator-facing location prose shown on queue rows and mini-maps. Null clears it.

map_headingnumber nullable

Direction the device faces, in degrees clockwise from map-up (true north on a geographic map, the top edge of a floor plan). Null clears the aim; omit to preserve it.

Example request

{
  "map_x": 0.42,
  "map_y": 0.63,
  "map_lat": 42.0443,
  "map_lng": -87.9825,
  "map_location_label": "NE corner — loading dock",
  "map_heading": 225
}

Response

Successful Response

idstring uuid required

The speaker record ID.

site_idstring uuid required

The site this speaker belongs to.

parent_idstring uuid required

The client this speaker belongs to.

labelstring required

Display name.

brand'axis' required
model'axis_c1310_e' | 'axis_c1210_e' | 'axis_c1310_e_mk2'
hoststring required

IP address of the speaker (IPv4 or IPv6 literal), in canonical form. Hostnames are not supported in v1.

portstring required

HTTPS port.

usernamestring required

Device account username (the password is never returned).

transport'direct_https' | 'direct_http' | 'nvr_proxy' required
clip_idstring nullable

Id of the pre-loaded deterrent clip.

clip_paramsobject nullable

Playback parameters.

enabledboolean required

Whether delivery and the health poll consider this speaker.

sip_enabledboolean

Whether the AI voice agent may place a SIP call to this speaker.

sip_account_idstring nullable

Which of the device's SIP accounts the agent's call is placed from; null means the device default.

mic_enabledboolean

Whether this unit's microphone is live, which decides whether the agent waits for a reply.

onboarding_checklistobject nullable

The device-setup checklist: the owner's own attestations under items, each stamped server-side. An absent key means not confirmed. The one item the device answers for itself is NOT stored here — read it live from GET /speakers/{id}/sip-accounts.

agent_armed_camera_countinteger nullable

How many of this speaker's camera mappings are ARMED for the AI agent. Zero means nothing will ever announce here, however the device is configured.

map_xnumber nullable

Normalized floor-plan x.

map_ynumber nullable

Normalized floor-plan y.

map_latnumber nullable

Geographic latitude of the speaker pin.

map_lngnumber nullable

Geographic longitude of the speaker pin.

map_location_labelstring nullable

Operator-facing location prose.

map_headingnumber nullable

Direction a horn faces, degrees clockwise from map-up; null = not aimed (always null for an omnidirectional ceiling unit).

healthyboolean nullable

Last health-poll result.

last_healthcheck_atstring date-time nullable

When the speaker was last polled.

health_errorstring nullable

Why the last health poll failed: unreachable (no HTTP answer), auth_rejected (the device answered 401 to the stored credentials), not_a_speaker (something answered, but not an Axis device API - e.g. a router page), clip_missing (the configured clip id is not on the device), or error. Null when healthy or never checked.

device_serialstring nullable

Serial number of the device last seen at this host:port, read without credentials. Compare it across speakers to tell two units behind one IP apart. Last known value; a failed poll keeps it.

device_productstring nullable

Product name of the device last seen at this host:port (ProdFullName, else ProdNbr). Last known value.

device_firmwarestring nullable

Firmware version of the device last seen at this host:port. Last known value.

device_identity_atstring date-time nullable

When the device identity above was last read successfully.

created_atstring date-time nullable

When the speaker was registered.

updated_atstring date-time nullable

When the speaker was last edited.

Example response

{
  "label": "SE Horn — dumpster",
  "host": "167.20.111.104",
  "port": "443",
  "username": "root",
  "clip_id": "1",
  "clip_params": {
    "volume": 80
  },
  "sip_account_id": "sip_account_1",
  "onboarding_checklist": {
    "items": {
      "audio_direction": {
        "done_at": "2026-09-11T18:20:44Z",
        "operator_id": "..."
      }
    },
    "version": 1
  },
  "agent_armed_camera_count": 2,
  "map_location_label": "SE corner — by the dumpster",
  "map_heading": 180,
  "health_error": "auth_rejected",
  "device_serial": "B8A44FA89513",
  "device_product": "AXIS C1310-E Network Horn Speaker",
  "device_firmware": "11.11.192"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.