{"openapi":"3.1.0","info":{"title":"Cifradia Domain Feed API","description":"\nDomains newly registered and deleted every day across gTLDs, with keyword statistics\nand a bulk daily ZIP export.\n\n## Authentication\nSend your API key in every request: `Authorization: Bearer cfd_live_...`. A key comes\nwith a subscription at https://www.cifradia.com: you receive a one-time link by email\nand open it to see your key (`POST /v1/keys/claim`).\n\nYour plan sets requests per minute, requests per day, how many days of history you can\nquery, which TLDs and whether `/v1/dailyzip/` is included. Outside your plan the API\nanswers `403`; over a limit, `429` with `Retry-After`. `RateLimit-*` and\n`X-Daily-Quota-*` headers show what is left.\n\n## Endpoints\n- `GET /v1/tlds` - TLDs with cumulative and latest added/deleted counts\n- `GET /v1/added` - Domains newly observed on a date (or a range, with `dcm`)\n- `GET /v1/deleted` - Domains no longer observed on a date\n- `GET /v1/history` - Added/deleted timeline of one domain\n- `GET /v1/keywords` - Keyword occurrence statistics\n- `GET /v1/dailyzip/` - Every added or deleted domain of a day, as a ZIP\n- `POST /v1/keys/claim` - Exchange your one-time claim link for your API key\n- `GET /health` - `ok` (200) or `degraded` (503)\n    ","contact":{"name":"Cifradia","url":"https://www.cifradia.com/","email":"contacto@cifradia.com"},"version":"2.0.0"},"servers":[{"url":"https://api.cifradia.com","description":"Production"}],"paths":{"/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"`ok` (200) when the service can answer, `degraded` (503) otherwise.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/keys/claim":{"post":{"tags":["Keys"],"summary":"Redeem Claim","description":"Exchanges a one-time claim link for the API key. The key is shown only in this response.\n\n`key_status` is `active`, or `suspended` while the key waits to be activated (for a\nrepeated free trial, until the first payment): a suspended key is rejected with `401`\nuntil then.","operationId":"redeem_claim_v1_keys_claim_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tlds":{"get":{"tags":["Domain Activity Feed"],"summary":"List Tlds","description":"Returns all supported TLDs with domain counts and latest add/delete counts.","operationId":"list_tlds_v1_tlds_get","security":[{"ApiKey":[]}],"parameters":[{"name":"listall","in":"query","required":false,"schema":{"type":"boolean","description":"Include TLDs with no data yet","default":false,"title":"Listall"},"description":"Include TLDs with no data yet"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/history":{"get":{"tags":["Domain Activity Feed"],"summary":"Domain History","description":"Every added/deleted event of one domain, oldest first (re-registrations included).","operationId":"domain_history_v1_history_get","security":[{"ApiKey":[]}],"parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string","description":"Fully qualified domain name, e.g. example.com","title":"Domain"},"description":"Fully qualified domain name, e.g. example.com"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/added":{"get":{"tags":["Domain Activity Feed"],"summary":"Added Domains","description":"Domains newly observed in the daily gTLD activity data on the given date.","operationId":"added_domains_v1_added_get","security":[{"ApiKey":[]}],"parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"yyyymmdd; omit for latest available data","title":"Date"},"description":"yyyymmdd; omit for latest available data"},{"name":"kw","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keyword filter, '|' for OR, '%' wildcard","title":"Kw"},"description":"Keyword filter, '|' for OR, '%' wildcard"},{"name":"tlds","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated TLD list, e.g. com,net,org","title":"Tlds"},"description":"Comma-separated TLD list, e.g. com,net,org"},{"name":"dcm","in":"query","required":false,"schema":{"type":"string","description":"Date comparison mode: eq, lt, gt, lte, gte","default":"eq","title":"Dcm"},"description":"Date comparison mode: eq, lt, gt, lte, gte"},{"name":"idn","in":"query","required":false,"schema":{"type":"integer","description":"0=non-IDN only, 1=IDN only, 2=all","default":2,"title":"Idn"},"description":"0=non-IDN only, 1=IDN only, 2=all"},{"name":"sorton","in":"query","required":false,"schema":{"type":"string","description":"date, domain, length, idn, or tld","default":"date","title":"Sorton"},"description":"date, domain, length, idn, or tld"},{"name":"dm","in":"query","required":false,"schema":{"type":"string","description":"data or stats","default":"data","title":"Dm"},"description":"data or stats"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250000,"default":50000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/deleted":{"get":{"tags":["Domain Activity Feed"],"summary":"Deleted Domains","description":"Domains no longer observed in the daily gTLD activity data on the given date.","operationId":"deleted_domains_v1_deleted_get","security":[{"ApiKey":[]}],"parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"yyyymmdd; omit for latest available data","title":"Date"},"description":"yyyymmdd; omit for latest available data"},{"name":"kw","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keyword filter, '|' for OR, '%' wildcard","title":"Kw"},"description":"Keyword filter, '|' for OR, '%' wildcard"},{"name":"tlds","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated TLD list, e.g. com,net,org","title":"Tlds"},"description":"Comma-separated TLD list, e.g. com,net,org"},{"name":"dcm","in":"query","required":false,"schema":{"type":"string","description":"Date comparison mode: eq, lt, gt, lte, gte","default":"eq","title":"Dcm"},"description":"Date comparison mode: eq, lt, gt, lte, gte"},{"name":"idn","in":"query","required":false,"schema":{"type":"integer","description":"0=non-IDN only, 1=IDN only, 2=all","default":2,"title":"Idn"},"description":"0=non-IDN only, 1=IDN only, 2=all"},{"name":"sorton","in":"query","required":false,"schema":{"type":"string","description":"date, domain, length, idn, or tld","default":"date","title":"Sorton"},"description":"date, domain, length, idn, or tld"},{"name":"dm","in":"query","required":false,"schema":{"type":"string","description":"data or stats","default":"data","title":"Dm"},"description":"data or stats"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250000,"default":50000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/keywords":{"get":{"tags":["Domain Activity Feed"],"summary":"Keywords","description":"Keyword occurrence counts across daily added/deleted domains (non-IDN only).","operationId":"keywords_v1_keywords_get","security":[{"ApiKey":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"added or deleted","default":"added","title":"Source"},"description":"added or deleted"},{"name":"dm","in":"query","required":false,"schema":{"type":"string","description":"data, stats, topkw, or aggregate","default":"data","title":"Dm"},"description":"data, stats, topkw, or aggregate"},{"name":"kw","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keyword(s), '|' separated, 4+ chars each","title":"Kw"},"description":"Keyword(s), '|' separated, 4+ chars each"},{"name":"tlds","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated TLD list","title":"Tlds"},"description":"Comma-separated TLD list"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"yyyymmdd; omit for latest available data","title":"Date"},"description":"yyyymmdd; omit for latest available data"},{"name":"dcm","in":"query","required":false,"schema":{"type":"string","description":"Date comparison mode: eq, lt, gt, lte, gte","default":"eq","title":"Dcm"},"description":"Date comparison mode: eq, lt, gt, lte, gte"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"description":"Max rows for topkw","default":100,"title":"Limit"},"description":"Max rows for topkw"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dailyzip/":{"get":{"tags":["Domain Activity Feed"],"summary":"Daily Zip","description":"Downloads a ZIP of the full domain list for a given date.","operationId":"daily_zip_v1_dailyzip__get","security":[{"ApiKey":[]}],"parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"yyyymmdd; omit for previous day's data","title":"Date"},"description":"yyyymmdd; omit for previous day's data"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"added or deleted","default":"added","title":"Source"},"description":"added or deleted"},{"name":"latest","in":"query","required":false,"schema":{"type":"boolean","description":"ZIP for today's data processed so far (only without date)","default":false,"title":"Latest"},"description":"ZIP for today's data processed so far (only without date)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["Root"],"summary":"Root","description":"API index: where the documentation is and how to authenticate.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"ClaimRequest":{"properties":{"token":{"type":"string","maxLength":256,"title":"Token","description":"The `t` value of the claim link"}},"type":"object","required":["token"],"title":"ClaimRequest"},"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"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKey":{"type":"http","description":"API key issued by Cifradia, sent as `Authorization: Bearer cfd_live_...`.","scheme":"bearer"}}},"tags":[{"name":"Domain Activity Feed","description":"Public feed: daily added/deleted gTLD domains, keyword statistics, bulk ZIP export. Authenticate with `Authorization: Bearer <api key>`."},{"name":"Keys","description":"Redeem a one-time claim link for your API key. No authentication."},{"name":"Health","description":"Service health, no authentication."},{"name":"Root","description":"API index."}],"security":[]}