Skip to content

Slug taken

The requested agent slug is well-formed but already belongs to another agent.

  • On POST /v1/agent/register, the (valid) slug collides with an existing agent row. Slugs are globally unique.
  • Distinct from ERR-P01-IDT-2002 (the slug fails the pattern); here the shape is fine but the name is occupied.
  • Choose a different slug and retry.
  • Slugs are never recycled implicitly - if you control the existing agent and want the name, revoke or rename it first (admin surface).
  • Raised by: packages/identity/src/service/register.ts - register (slug uniqueness check).
  • Guard: if (existing[0]) throw new RegisterError('slug_taken', 'slug already in use', { slug }); mapped to IDENTITY_ERR.slug_taken (409) in packages/identity/src/router/register.ts.
{
"type": "https://citizenry.id/errors/ERR-P01-IDT-3110",
"title": "Conflict",
"status": 409,
"code": "ERR-P01-IDT-3110",
"message": "slug already in use",
"detail": { "slug": "atlas" },
"method": "POST",
"instance": "/v1/agent/register",
"request_url": "https://api.citizenry.id/v1/agent/register",
"timestamp": "2026-05-17T07:00:00.000Z"
}
  • 0.1.0 - introduced.