---
title: "Check Handle Available"
method: GET
path: "/api/company/handle-available"
tags: ["companies"]
---

# Check Handle Available

`GET /api/company/handle-available`

## Request

- Base URL: `https://api.parlel.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.parlel.com/api/company/handle-available`
- Auth: none declared

Whether the company editor may offer ``handle``. Advisory, never authoritative.

Byte-for-byte the same contract as ``GET /api/profile/handle-available``,
including the answers: a boolean and a coarse reason, never the holder. That
is not duplication for its own sake -- the two editors are two screens asking
one question about one namespace, and an answer that differed between them
would be a bug in whichever one a user believed.

**It checks both tables, and that is the whole reason it exists as a second
endpoint rather than the profile one being reused.** A company editor told
that ``stripe`` is free because no other COMPANY holds it would let somebody
publish a page that collides with a person, which is the collision the shared
namespace exists to prevent.

Your own handle comes back available, whichever table holds it: reopening the
editor and pressing Save without touching the field must not be told your own
name is taken.

A shape violation is a ``false`` with ``reason: "invalid"``, not a 422. This is
called as the user types, and "you have typed two characters so far" is not a
client error.

## Query parameters

- `handle` string, required

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/parlel/apis/parlel-api.md) · [All operations](https://skmtc.dev/parlel/apis/parlel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/parlel/apis/parlel-api/revisions/4d41a8f5cfc9?raw)
