---
title: "List the project's UDP devices, newest first (any member)"
method: GET
path: "/v1/projects/{project_id}/udp/devices"
tags: ["udp"]
---

# List the project's UDP devices, newest first (any member)

`GET /v1/projects/{project_id}/udp/devices`

## Request

- Base URL: `https://api.wavehouse.cloud`
- URL: `https://api.wavehouse.cloud/v1/projects/{project_id}/udp/devices`
- Auth: one of:
  - API key in cookie `whc_session`
  - HTTP bearer
  - API key in header `X-API-Key`

Never the key: it existed once, in the create response. `last_seen_at` is when the edge last accepted a datagram from the device, batched, so it trails by up to a minute.

## Path parameters

- `project_id` string, required

## Query parameters

- `limit` integer: page size; 0 or absent means 50
- `cursor` string: next_cursor from the previous page; absent for the first page

## Response `200`

OK

- UDPDevicePage
  - `data` UDPDeviceView[], required
    - `bytes_per_second` integer, required: bytes per second the edge accepts; 0 is unlimited
    - `content_encoding` string: gzip or zstd when the device compresses; empty otherwise
    - `content_type` string, required: the media type the payload is posted to the engine under
    - `created_at` string, date-time, required
    - `created_by` string
    - `enabled` boolean, required
    - `expires_at` string, date-time: absent when the device does not expire
    - `id` string, required: 16 hex characters — the 8 bytes that lead every datagram
    - `last_seen_at` string, date-time: batched: it trails live traffic by up to a minute
    - `name` string, required
    - `nonce_len` integer, required
    - `rate_per_second` number, double, required: datagrams per second the edge accepts; 0 is unlimited
    - `revoked_at` string, date-time: present once revoked
    - `status` string, required: active | disabled | revoked | expired
    - `suite` string, required
    - `table` string, required
  - `next_cursor` string, nullable, required: pass as cursor to fetch the next page; null on the last page

## Other responses

- `429`: Rate limited, per client IP, API key or org; a client IP is also refused on every route for a while after repeated authentication failures. A limited operation carries RateLimit-Policy and RateLimit on every response; wait Retry-After seconds before retrying.
- `default`: Error

---

[API](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api.md) · [All operations](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/revisions/ddf93caac44e?raw)
