Get Endpoint
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
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"
}