Get one person URL

View as Markdown

Returns one person-owned URL row by id. Requires read auth.

Authentication

AuthorizationBearer

User bearer token: Supabase or Clerk session JWT, Clerk OAuth access token, or Clerk personal API key

OR
X-API-Keystring

Admin API key for system-to-system write operations

OR
X-Client-Secretstring

Client secret for read-only service-to-service access (no writes)

Path parameters

personIdstringRequiredformat: "uuid"
Person UUID owning the URL row
urlIdlongRequired
URL link id

Response

OK
urlstringformat: "uri"

Canonical absolute HTTP URL value - validates scheme + host at construction

urlTypeenum
Canonical URL platform type such as website, linkedin, twitter, or github. Lifecycle facts belong on link flags such as isCurrent and isPrimary.
crawlCdnProviderenum or nullOptional
CDN or hosting provider fronting a web URL.
crawlRenderModeenum or nullOptional
JavaScript rendering requirement for crawl checks.
createdAtdatetime or nullOptional
idinteger or nullOptional
isCurrentboolean or nullOptional

true = owner currently uses this URL; false = historical/former (rebrand source domain, deprecated platform handle). The lifecycle state lives here, NEVER in the urlType discriminator.

isPrimaryboolean or nullOptional

true = canonical/primary URL of this urlType for this owner. Only one row per (owner, urlType) may be isCurrent=true AND isPrimary=true.

ownerobject or nullOptional

Owning record, nested ids only: owner.entityId or owner.personId — exactly one is set, and no name fields. Writes are scoped by the owning entity/person route; owner is never a write field.

sourceIdstring or nullOptional
statusstring or nullOptional
statusCheckeddatetime or nullOptional
updatedAtdatetime or nullOptional

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
406
Not Acceptable Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error