---
title: "Claim a hostname for one plane [admin]"
method: POST
path: "/partner/domains"
tags: ["partner"]
---

# Claim a hostname for one plane \[admin\]

`POST /partner/domains`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/partner/domains`
- Auth: HTTP bearer

The response leads with the CNAME a person must add at the partner's own registrar — the one step of onboarding nobody on our side can do. Adding the row is not ownership: nothing routes until domain-control validation issues a certificate.

## Request body

- AddPartnerHostname
  - `hostname` string, required
  - `plane` 'API' | 'GATEWAY' | 'APP' | 'ACCOUNTS' | 'STUDIO_POOL', required

## Response `201`

Claimed, pending DNS

- object
  - `dns_record` string
  - `next_action` string
  - `partner` Partner
    - `id` string
    - `slug` string
    - `name` string
    - `status` 'pending' | 'active' | 'suspended'
    - `key_prefix` string, nullable: Null until claimed.
    - `brand` object
    - `brand_missing` string[]: Brand fields still falling back to ours.
    - `rate_limit_per_min` integer, nullable
    - `hostname_quota` integer
    - `hostnames` PartnerHostname[]
      - `hostname` string
      - `plane` 'API' | 'GATEWAY' | 'APP' | 'ACCOUNTS' | 'STUDIO_POOL' | 'STUDIO_WILDCARD'
      - `ssl_status` string
      - `serving` boolean: Only a serving hostname counts toward going live.

## Other responses

- `default`: Error — { error: { code, message } }

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - added the optional property `error/request_id` to the response with the `default` status

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/partner/domains/post.md)

---

[API](https://skmtc.dev/agentsky/apis/agentsky-developer-api.md) - [All operations](https://skmtc.dev/agentsky/apis/agentsky-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentsky/apis/agentsky-developer-api/revisions/8280a065ef6a?raw)
