---
title: "Start monitoring a new domain (counts as 5 requests against the monthly quota)"
method: POST
path: "/domains"
---

# Start monitoring a new domain (counts as 5 requests against the monthly quota)

`POST /domains`

## Request

- Base URL: `https://www.domainlab.app/api/v1`
- URL: `https://www.domainlab.app/api/v1/domains`
- Auth: HTTP bearer

## Request body

- object
  - `domain_name` string, required: Bare hostname; scheme/path/port are stripped and it is lowercased
  - `frequency_interval` 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'biannually' | 'annually': Defaults to the fastest frequency your plan allows
  - `notification_enabled` boolean

## Response `201`

Domain created; first scan queued automatically

## Other responses

- `400`: Invalid input. data.code is INVALID_BODY, MISSING_DOMAIN_NAME, INVALID_DOMAIN_NAME, INVALID_FREQUENCY, or FREQUENCY_NOT_IN_PLAN (data: { plan, allowed }).
- `401`: Missing or invalid API key
- `403`: Account lacks API access (no active subscription or trial)
- `409`: Domain already exists for this account
- `429`: Rate limit or monthly quota exceeded. Respect the Retry-After header. code is RATE_LIMITED (short-lived) or MONTHLY_QUOTA_EXCEEDED (resets next period).

---

[API](https://skmtc.dev/domainlab/apis/domain-lab-api.md) · [All operations](https://skmtc.dev/domainlab/apis/domain-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domainlab/apis/domain-lab-api/revisions/5dade951c661?raw)
