Floor plans

A floor plan is a drawing you upload for one level of a map. Waygo turns it into a built level; the plan's status goes uploaded → building → ready (or failed). This API does what the dashboard's Upload floor plan popup and Floor plans table do.

Uploads belong to a map, so they live under /maps/v1/:map_id. Building is Waygo's job: there is no endpoint to build, and the floor structure (levels) is managed by your Waygo team.

ENDPOINTS

POST   /maps/v1/:map_id/floor-plans
GET    /maps/v1/:map_id/floor-plans
GET    /floor-plans/v1/:floor_plan_id/file
DELETE /floor-plans/v1/:floor_plan_id

The floor plan object

  • Name
    dataset_id
    Type
    string
    Description
    The floor plan's ID.
  • Name
    name
    Type
    string
    Description
    The file name it was uploaded as.
  • Name
    status
    Type
    'uploaded' | 'building' | 'ready' | 'failed'
    Description
    Where it is in the build.
  • Name
    feature_count
    Type
    integer | null
    Description
    How many rooms, booths and other features the built level has.
  • Name
    source_file
    Type
    object | null
    Description
    { upload_id, filename, content_type, size, url }: the original drawing.
  • Name
    map_id
    Type
    string | null
    Description
    The map it was uploaded for.
  • Name
    level_index
    Type
    integer | null
    Description
    The level it belongs to, counted from 0.
  • Name
    level_label
    Type
    string | null
    Description
    For a plan uploaded as a new level: the level's intended name.
  • Name
    note
    Type
    string | null
    Description
    The note sent with the upload.
  • Name
    uploaded_by
    Type
    string | null
    Description
    Who uploaded it.
  • Name
    build_started_at / built_at
    Type
    timestamp | null
    Description
    Build timestamps.
  • Name
    created_at / updated_at
    Type
    timestamp
    Description
    Timestamps.

The floor plan object

{
  "dataset_id": "d4f1…",
  "account_id": "dash-dev-acct",
  "name": "expo-hall.dwg",
  "status": "ready",
  "feature_count": 214,
  "source_file": {
    "upload_id": "u7…",
    "filename": "expo-hall.dwg",
    "content_type": "application/acad",
    "size": 4821904,
    "url": "https://storage.waygomaps.com/…/expo-hall.dwg"
  },
  "map_id": "acme-expo-2027",
  "level_index": 0,
  "level_label": null,
  "note": "Booth numbers are on the BOOTHS layer",
  "uploaded_by": "ops@acme.example",
  "build_started_at": "2026-08-05T10:12:00",
  "built_at": "2026-08-07T16:40:00",
  "created_at": "2026-08-04T09:00:00",
  "updated_at": "2026-08-07T16:40:00"
}

POST/maps/v1/:map_id/floor-plans

Upload floor plans

A multipart upload of one or more drawings, each assigned to a level. Every file becomes a floor plan in the uploaded state and your Waygo team is notified.

Form fields

  • Name
    files
    Type
    file[]
    Description

    One or more drawings: PDF, DWG, DXF, SVG, PNG, JPEG or TIFF, up to 50 MB each.

  • Name
    assignments
    Type
    JSON string
    Description

    A list aligned with files, one entry per file: { "level_index": 0 } for an existing level, or { "new_level_label": "Mezzanine" } for a level the map does not have yet.

  • Name
    note
    Type
    string
    Description

    Optional note for Waygo.

Errors

  • Name
    403 capability_denied
    Description
    Uploads are not allowed on this map right now (reason says why).
  • Name
    422 floor_plan_invalid_file
    Description
    A file's type or size is not accepted.

POST /maps/v1/:map_id/floor-plans

API KEY SCOPE
floor-plan-uploads:write
curl -X POST https://api.waygomaps.com/maps/v1/acme-expo-2027/floor-plans \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -F "files=@expo-hall.dwg" \
  -F "files=@mezzanine.dwg" \
  -F 'assignments=[{"level_index": 0}, {"new_level_label": "Mezzanine"}]' \
  -F "note=Booth numbers are on the BOOTHS layer"

Response (201)

{
  "floor_plans": [
    { "dataset_id": "d4f1…", "name": "expo-hall.dwg", "status": "uploaded", "level_index": 0, "…": "…" },
    { "dataset_id": "e9a2…", "name": "mezzanine.dwg", "status": "uploaded", "level_index": null, "level_label": "Mezzanine", "…": "…" }
  ]
}

GET/maps/v1/:map_id/floor-plans

List a map's floor plans

Every floor plan uploaded for the map, with its status. Poll it to follow a build.

GET /maps/v1/:map_id/floor-plans

API KEY SCOPE
floor-plan-uploads:read
curl https://api.waygomaps.com/maps/v1/acme-expo-2027/floor-plans \
  -H "Waygo-API-Key: $WAYGO_API_KEY"

Response

{ "floor_plans": [ { "dataset_id": "d4f1…", "status": "ready", "…": "…" } ] }

GET/floor-plans/v1/:floor_plan_id/file

Download the original file

Redirects (307) to the stored drawing. Follow redirects in your client.

GET /floor-plans/v1/:floor_plan_id/file

API KEY SCOPE
floor-plan-uploads:read
curl -L https://api.waygomaps.com/floor-plans/v1/d4f1…/file \
  -H "Waygo-API-Key: $WAYGO_API_KEY" -o expo-hall.dwg

DELETE/floor-plans/v1/:floor_plan_id

Delete a floor plan

Only while the plan is still uploaded. Once Waygo has started building it, answers 409 floor_plan_status_conflict; contact your Waygo team instead.

DELETE /floor-plans/v1/:floor_plan_id

API KEY SCOPE
floor-plan-uploads:delete
curl -X DELETE https://api.waygomaps.com/floor-plans/v1/e9a2… \
  -H "Waygo-API-Key: $WAYGO_API_KEY"

Response

204 No Content