---
title: "Read Public Profile"
method: GET
path: "/v1/public/profiles/{username}"
tags: ["public"]
---

# Read Public Profile

`GET /v1/public/profiles/{username}`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/public/profiles/{username}`
- Auth: none declared

A published profile, by handle. Anonymous, read-only, allowlisted.

A handle asked for in the wrong case, or by a handle its owner has since renamed
away from, answers 200 with ``canonicalUsername`` set and no profile body -- the
caller (the page route) turns that into a 307 to the canonical URL. Visibility is
re-checked before the redirect is offered, so a redirect cannot confirm a private
profile exists.

A read that FAILS must surface as a 5xx, never as this 404: a transient database
error answered "no such user" is a lie that crawlers and caches will keep.

## Path parameters

- `username` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
