---
title: "Is this @handle free"
method: GET
path: "/api/username/check"
tags: ["Businesses"]
---

# Is this @handle free

`GET /api/username/check`

Availability for the create-business form. Handles are global and permanent, so this takes no business context — for a second business, your own other handles are taken like anyone else's. Read-only and advisory: the real guarantee is the unique index that `createBusiness` hits, which is why that operation can still answer 409. Authenticated so it is not an open handle-enumeration endpoint.

## Query parameters

- `username` string, required

## Response `200`

Whether the handle is free. NOTE: this operation answers at the top level rather than inside a `data` envelope.

- UsernameAvailability
  - `available` boolean, required — Whether the handle can be claimed right now.
  - `reason` string — Why not, as copy to show under the field. Present only when `available` is false.

## Other responses

- `401` — No session token, or a token that is expired or invalid.
- `500` — Something failed on our side. The response body says so and nothing more; the detail is in our logs.

---

[API](https://skmtc.dev/result/apis/result-api.md) · [All operations](https://skmtc.dev/result/apis/result-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/result/result-api/revisions/103d45168871/schema)
