v1 JSON REST

Odrim Domain API

Check .com domain availability programmatically. Free tier supports IP-based checks; paid plans use API keys for bulk checks and keyword search.

Authentication

Paid plans require an API key on every request:

Authorization: Bearer YOUR_API_KEY

Create keys at Dashboard → API Keys. Keys start with odr_live_ and are shown only once at creation.

Free tier: GET /v1/check works without a key (IP rate limit applies).

Base URL

https://app.odrim.com

All v1 routes are prefixed with /v1.

Rate limits

Daily quotas reset at midnight UTC. Responses include:

  • X-RateLimit-Remaining — requests left today
  • X-RateLimit-Reset — next reset (ISO 8601)

When exceeded, the API returns 429 with retry_after in the JSON body.

PlanRequests/dayBulk limitRPS
Free (IP)5001
Starter5,0005005
Pro50,0005,00020
Enterprise500,000+50,000100

Endpoints

MethodPathAuthDescription
GET/v1/checkKey or IPSingle domain check
POST/v1/bulkPaid keyUp to plan bulk limit
POST/v1/searchPaid keyKeyword combinations
GET/v1/meKeyAccount info
GET/v1/usageKeyQuota snapshot

Check domain

GET /v1/check

Check one domain (label with or without .com).

Query parameters

NameTypeRequiredDescription
domainstringyesDomain label, e.g. example

Response

{
  "domain": "example.com",
  "available": true,
  "checked_at": "2026-05-17T12:00:00Z",
  "quota": {
    "used_today": 42,
    "limit_today": 5000,
    "resets_at": "2026-05-18T00:00:00Z"
  }
}

              

              

              

              

Bulk check

POST /v1/bulk

Starter+ — check multiple domains in one request.

Request body

{"domains": ["foo", "bar", "mybrand"]}

Response

{
  "results": [{"domain": "foo.com", "available": false}],
  "checked": 3,
  "elapsed_ms": 12.4,
  "quota": { "used_today": 100, "limit_today": 5000, "resets_at": "..." }
}

              

              

              

              

Account

GET /v1/me

Returns account email, plan, and API key prefix.

Usage

GET /v1/usage

Returns current quota usage for the API key.

Error responses

Errors use a consistent JSON shape:

{"error": "rate_limited", "message": "Daily limit reached", "retry_after": "2026-05-18T00:00:00Z"}
HTTPerrorMeaning
400invalid_requestBad parameters or bulk over limit
401unauthorizedMissing or invalid API key
403forbiddenPlan not allowed (e.g. free on bulk)
429rate_limitedQuota or RPS exceeded
503service_unavailableRedis zone loading

Changelog

2026-05-17 — v1.0.0

  • Initial public API: check, bulk, search, me, usage
  • Free IP tier for single checks
  • Rate limit headers on all authenticated routes

Playground

Send a live request from your browser. Your API key is stored locally only.

Try GET /v1/check

Loading session…

Response will appear here.