# Domains

Manage custom domains for white-labelled interview URLs.

## List custom domains

> Returns all custom domains configured for the workspace.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Domains","description":"Manage custom domains for white-labelled interview URLs."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"ListResponse_CustomDomainResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CustomDomainResponse"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object","required":["data","pagination"],"title":"ListResponse[CustomDomainResponse]"},"CustomDomainResponse":{"properties":{"object":{"type":"string","const":"domain","title":"Object","description":"Object type identifier.","default":"domain"},"id":{"type":"string","title":"Id","description":"Unique domain configuration identifier."},"domain":{"type":"string","title":"Domain","description":"The custom domain name."},"cname_target":{"type":"string","title":"Cname Target","description":"CNAME target for DNS configuration."},"status":{"type":"string","title":"Status","description":"Domain verification status: 'pending', 'active', 'error'."},"active":{"type":"boolean","title":"Active","description":"Whether the domain is verified and active for use."},"created_at":{"type":"number","title":"Created At","description":"Unix timestamp when the domain was created."},"updated_at":{"type":"number","title":"Updated At","description":"Unix timestamp when the domain was last updated."}},"type":"object","required":["id","domain","cname_target","status","active","created_at","updated_at"],"title":"CustomDomainResponse","description":"A custom domain for candidate-facing interview URLs.\n\nCustom domains allow workspaces to white-label the candidate\nexperience (e.g. ``interviews.acme.com`` instead of\n``candidates.heymilo.io``). Domains require CNAME verification\npointing to ``ingress.heymilo.ai``."},"PaginationMeta":{"properties":{"has_more":{"type":"boolean","title":"Has More","description":"Whether more results exist beyond this page"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count","description":"Total number of results (if available)"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"URL of this resource"}},"type":"object","required":["has_more"],"title":"PaginationMeta"},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/domains":{"get":{"tags":["Domains"],"summary":"List custom domains","description":"Returns all custom domains configured for the workspace.","operationId":"listDomains","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_CustomDomainResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```

## Get a custom domain

> Returns a single custom domain configuration by ID.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Domains","description":"Manage custom domains for white-labelled interview URLs."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"SingleResponse_CustomDomainResponse_":{"properties":{"data":{"$ref":"#/components/schemas/CustomDomainResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta","description":"Optional metadata. Shape varies by endpoint."}},"type":"object","required":["data"],"title":"SingleResponse[CustomDomainResponse]"},"CustomDomainResponse":{"properties":{"object":{"type":"string","const":"domain","title":"Object","description":"Object type identifier.","default":"domain"},"id":{"type":"string","title":"Id","description":"Unique domain configuration identifier."},"domain":{"type":"string","title":"Domain","description":"The custom domain name."},"cname_target":{"type":"string","title":"Cname Target","description":"CNAME target for DNS configuration."},"status":{"type":"string","title":"Status","description":"Domain verification status: 'pending', 'active', 'error'."},"active":{"type":"boolean","title":"Active","description":"Whether the domain is verified and active for use."},"created_at":{"type":"number","title":"Created At","description":"Unix timestamp when the domain was created."},"updated_at":{"type":"number","title":"Updated At","description":"Unix timestamp when the domain was last updated."}},"type":"object","required":["id","domain","cname_target","status","active","created_at","updated_at"],"title":"CustomDomainResponse","description":"A custom domain for candidate-facing interview URLs.\n\nCustom domains allow workspaces to white-label the candidate\nexperience (e.g. ``interviews.acme.com`` instead of\n``candidates.heymilo.io``). Domains require CNAME verification\npointing to ``ingress.heymilo.ai``."},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/domains/{config_id}":{"get":{"tags":["Domains"],"summary":"Get a custom domain","description":"Returns a single custom domain configuration by ID.","operationId":"getDomain","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleResponse_CustomDomainResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"404":{"description":"Domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.admin.heymilo.ai/api-next-gen/reference/domains.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
