---
title: "Register and link a durable developer agent identity"
method: POST
path: "/api/v1/agents/register"
tags: ["Registered Agents"]
---

# Register and link a durable developer agent identity

`POST /api/v1/agents/register`

## Request

- Base URL: `https://api.daystruct.ai`
- URL: `https://api.daystruct.ai/api/v1/agents/register`
- Auth: HTTP bearer

An exact retry from the already-linked key returns the stable identity, including when the account is at its non-archived registration limit. Another key cannot claim the same account slug, archived slugs remain reserved, and a differing registration for that slug conflicts. Credentials rotate without moving the identity: the account owner authorizes additional keys for an existing agent in the developer portal, and a key can never link itself. Capabilities remain declared and routable is always false.

## Request body

- DeveloperAgentRegistration
  - `slug` string, required
  - `displayName` string, required
  - `description` string, required
  - `status` 'active' | 'disabled': API keys may create active or disabled identities; archival is owner-session only.
  - `capabilities` DeveloperAgentCapabilityDeclaration[]: One structured declaration per unique capability ID.
    - `id` string, required
    - `description` string, required

## Response `200`

Exact retry by the linked key; stable identity returned

- DeveloperAgentRegistrationEnvelope
  - `data` DeveloperAgent, required
    - `id` string, uuid, required
    - `ownerAccountId` string, uuid, required
    - `slug` string, required
    - `displayName` string, required
    - `description` string, required
    - `status` 'active' | 'disabled', required
    - `capabilities` DeveloperAgentCapability[], required
      - `id` string, required
      - `description` string, required
      - `state` 'declared', required
    - `routable` false, required: Always false. Registration creates identity and attribution only; it does not enable routing or task dispatch.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `lastSeenAt` string, date-time, nullable, required
    - `keyAssociation` object, required
      - `apiKeyId` string, uuid, required
      - `linked` true, required
  - `meta` object, required
    - `created` boolean, required

## Other responses

- `201`: Registered identity created and linked
- `400`: Invalid structured registration
- `401`: A valid API key is required
- `403`: The key lacks read or agents:write
- `409`: The account slug conflicts or the non-archived registration limit was reached

---

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