---
title: "Set my first name when I have none"
method: POST
path: "/me/person/first-name"
tags: ["first-name"]
---

# Set my first name when I have none

`POST /me/person/first-name`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/me/person/first-name`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `X-API-Key`

Gives the caller's own account a first name, only when it has none, so teammates in this workspace see a name instead of an email or nothing. This is what an AI app calls after asking the person what their team should call them. It writes only this account's display name: the person's own name, which identity checks read, and the person's accounts in other workspaces are never touched. It only fills: an account that already has a first name is 409 first_name_already_set and nothing is written, and changing a name is PATCH /me/person. A name is never replaced, even by a concurrent write. The name is trimmed and must be 1 to 100 characters, contain a letter, and hold no control or invisible characters (400 invalid_first_name). Tagged first-name so an OAuth client can be granted exactly this with the scope enforcer:first-name.write; a credential without it is 403 insufficient_scope.

## Request body

- InternalDeliveryHttpHandlerSetMyFirstNameRequest
  - `first_name` string

## Response `200`

OK

- InternalDeliveryHttpHandlerMyFirstNameResponse
  - `data` InternalDeliveryHttpHandlerMyFirstName
    - `first_name` string
  - `success` boolean

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict
- `500`: Internal Server Error

---

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