Skip to content

Wayfinding API

Manage corridors, branches, and floor transitions for indoor navigation. All endpoints require authentication.

Pro & EnterpriseCreate, update, and delete operations require a Pro or Enterprise plan.
Compare plans

Get All Wayfinding Data

http
GET /api/projects/{project_id}/wayfinding/
Authorization: Bearer <token>

Response:

json
{
  "corridors": [
    {
      "id": "corridor-uuid",
      "projectId": "project-uuid",
      "levelId": "level-uuid",
      "name": "Main hallway",
      "points": [
        { "x": 100, "y": 200 },
        { "x": 300, "y": 200 },
        { "x": 300, "y": 400 }
      ],
      "isClosed": false,
      "closedToPointIndex": null,
      "branches": [
        {
          "id": "branch-uuid",
          "corridorId": "corridor-uuid",
          "name": "",
          "points": [{ "x": 200, "y": 200 }, { "x": 200, "y": 150 }],
          "areaId": "area-uuid",
          "markerId": null,
          "transitionId": null
        }
      ],
      "createdAt": "2026-04-12T10:00:00Z",
      "updatedAt": "2026-04-12T10:00:00Z"
    }
  ],
  "transitions": [
    {
      "id": "transition-uuid",
      "projectId": "project-uuid",
      "type": "elevator",
      "name": "Elevator A",
      "positions": [
        { "levelId": "level-1-uuid", "x": 150, "y": 300 },
        { "levelId": "level-2-uuid", "x": 150, "y": 300 }
      ],
      "createdAt": "2026-04-12T10:00:00Z",
      "updatedAt": "2026-04-12T10:00:00Z"
    }
  ]
}

Corridors

Corridors are walkable paths on a single level. The routing engine uses them to calculate routes.

Create Corridor

http
POST /api/projects/{project_id}/wayfinding/corridors/
Authorization: Bearer <token>
Content-Type: application/json

{
  "levelId": "level-uuid",
  "name": "Main hallway",
  "points": [
    { "x": 100, "y": 200 },
    { "x": 300, "y": 200 },
    { "x": 300, "y": 400 }
  ],
  "isClosed": false
}

Update Corridor

http
PATCH /api/projects/{project_id}/wayfinding/corridors/{corridor_id}/
Authorization: Bearer <token>
Content-Type: application/json

{
  "points": [
    { "x": 100, "y": 200 },
    { "x": 350, "y": 200 }
  ]
}

Delete Corridor

http
DELETE /api/projects/{project_id}/wayfinding/corridors/{corridor_id}/
Authorization: Bearer <token>

Corridor Fields

FieldTypeDescription
levelIdUUIDLevel this corridor belongs to
namestringOptional label
points{x, y}[]Path vertices
isClosedbooleanWhether the path forms a loop
closedToPointIndexnumberLoop closure point index

Branches

Branches connect corridors to areas, markers, and transitions.

Create Branch

http
POST /api/projects/{project_id}/wayfinding/corridors/{corridor_id}/branches/
Authorization: Bearer <token>
Content-Type: application/json

{
  "points": [
    { "x": 200, "y": 200 },
    { "x": 200, "y": 150 }
  ],
  "areaId": "area-uuid"
}

Update Branch

http
PATCH /api/projects/{project_id}/wayfinding/corridors/{corridor_id}/branches/{branch_id}/
Authorization: Bearer <token>
Content-Type: application/json

{
  "markerId": "marker-uuid",
  "areaId": null
}

Delete Branch

http
DELETE /api/projects/{project_id}/wayfinding/corridors/{corridor_id}/branches/{branch_id}/
Authorization: Bearer <token>

Branch Fields

FieldTypeDescription
points{x, y}[]Path from corridor to target
areaIdUUID?Connected area (mutually exclusive)
markerIdUUID?Connected marker (mutually exclusive)
transitionIdUUID?Connected transition (mutually exclusive)

Transitions

Transitions connect corridors across floors (elevators, stairs, escalators).

Create Transition

http
POST /api/projects/{project_id}/wayfinding/transitions/
Authorization: Bearer <token>
Content-Type: application/json

{
  "type": "elevator",
  "name": "Elevator A",
  "positions": [
    { "levelId": "level-1-uuid", "x": 150, "y": 300 },
    { "levelId": "level-2-uuid", "x": 150, "y": 300 }
  ]
}

Update Transition

http
PATCH /api/projects/{project_id}/wayfinding/transitions/{transition_id}/
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Elevator B",
  "positions": [
    { "levelId": "level-1-uuid", "x": 160, "y": 310 },
    { "levelId": "level-2-uuid", "x": 160, "y": 310 },
    { "levelId": "level-3-uuid", "x": 160, "y": 310 }
  ]
}

Delete Transition

http
DELETE /api/projects/{project_id}/wayfinding/transitions/{transition_id}/
Authorization: Bearer <token>

Transition Types

TypeDescription
elevatorElevator between floors
stairsStaircase
escalatorEscalator
rampAccessible ramp
exitBuilding exit / entrance

Layota Documentation