Get Endpoint

GET /v1/endpoints/{id}

Fetch a single endpoint by its UUID. Returns the same field shape as GET /v1/endpoints's array entries: identifiers, public URL, protocol, status, mTLS mode, ephemeral flag, and timestamps.

Visibility rules: regular users only see their own endpoints — passing another user's UUID returns 404 (the same status as a non-existent UUID, to avoid leaking IDs). Admins can fetch any endpoint.

Path parameters

id string (uuid) Req
Endpoint UUID — the uuid field from a list response or the create response.

Response (200 OK)

id int64
Numeric internal ID. Prefer uuid for cross-API references.
uuid string
Stable identifier. Used in every other endpoint URL.
user_id int64
Owner. Same as the calling user except in admin views.
domain_id int64 | null
Domain anchoring this endpoint, or null for the platform default.
subdomain string
Subdomain part of the public URL. "@" means the root of the domain.
hostname string
The endpoint's public FQDN (e.g. myapp.ngris.io). Built from subdomain + the linked domain's name (or the platform default if domain_id is null); "@" resolves to the bare domain. Prefer this field when referring to the endpoint.
public_url string
Same value as hostname — the bare FQDN with no scheme. A single endpoint can serve HTTP, TCP, UDP and QUIC at once, so the platform does not prefix https://. For HTTP/unified endpoints, build a browser URL as https://<public_url>.
protocol string
Always unified for endpoints created now — endpoints are protocol-agnostic (one hostname serves HTTP/TCP/UDP/QUIC; the protocol is chosen per tunnel). Legacy rows may still show http/tcp/udp. Read-only; not accepted on create.
is_custom boolean
Whether the subdomain was user-chosen vs auto-generated.
status string
active | provisioning | error | disabled.
mtls_mode string
disabled | optional | required. Configure via PUT /v1/endpoints/{id}/mtls.
ephemeral boolean
true for auto-created endpoints (e.g. via ngris.connect()) that the janitor will reap when idle. Promote to make it permanent.
last_active_at datetime | null
Last time an agent connected (only tracked for ephemerals; null for permanents).
dedicated_tcp_port, dedicated_udp_port int | null
Assigned dedicated ports, if any. Configure via PUT /v1/endpoints/{id}/ports.
created_at, updated_at datetime
RFC 3339 UTC timestamps.

Errors

401 Unauthorized
Missing auth.
404 Not Found
UUID doesn't exist or belongs to another user.
Request
curl "https://api.ngris.com/v1/endpoints/9f1a3c00-5b7f-4f12-8c46-2c7dab5f1234" \ -H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") ep = client.endpoints.get("<endpoint_uuid>") print(ep.public_url, ep.status, ep.protocol)
Response — 200 OK
{ "id": 184, "uuid": "9f1a3c00-5b7f-4f12-8c46-2c7dab5f1234", "user_id": 1024, "domain_id": null, "subdomain": "myapp", "hostname": "myapp.ngris.io", "public_url": "myapp.ngris.io", "protocol": "unified", "is_custom": false, "status": "active", "mtls_mode": "disabled", "ephemeral": false, "last_active_at": null, "dedicated_tcp_port": null, "dedicated_udp_port": null, "created_at": "2026-04-29T12:34:56Z", "updated_at": "2026-04-29T12:34:56Z" }
On this page
Get Endpoint
Iris