Dbrij Domains Documentation

Everything you need to manage domains on Dbrij: search and buying including .ng, renewals, transfers, Dbrij nameservers, DNS records, connecting a domain, Hosting, email and the public endpoints.

Introduction

Dbrij Domains is where you buy domain names, including the Nigerian .ng family, priced in naira, and where you run their DNS, secure them with HTTPS and point them at your apps on Dbrij Hosting. Dbrij resells registrations through accredited registrars; it is not a registrar itself.

A domain arrives in one of two ways:

purchasedsourceBought or transferred through Dbrij. Dbrij renews it, and can write its DNS and change its nameservers for you.
connectedsourceRegistered somewhere else and brought in for DNS checks, HTTPS and Hosting. Its registration stays where it is.

Every domain lives in a space: your personal space or a company. The space decides who can change it and which Hosting services it can point at. Open your domains at /domains.

For a guided walkthrough, see the Domains guide.

Searching and buying

Search

Type a name or a full domain. Search is open to anyone, with no account. It covers one of two catalogues:

globaldefaultA bare name is checked across .com, .net, .org, .io, .co, .dev, .app, .ai, .xyz, .tech, .online, .site, .store, .cloud, .space, .biz, .info, .me, .cv. Type a full domain to check another ending.
ngNigerianThe .ng family: .ng, .com.ng, .org.ng, .net.ng, .i.ng, .name.ng, .sch.ng, .mobi.ng.

Each result says whether the name is available, whether it is a premium name (priced by the registry, and shown at that price), and its price for one year. What can actually be bought is decided live: an ending that cannot be bought here is listed with one sentence saying why, rather than left out. A name that can be bought also says how long the registry usually takes to publish a new name of that ending, measured on purchases made here.

Buy

  1. Add your registrant contact details once: name, address, city, state, postal code, country, phone and email. Registries require them.
  2. Choose how many years: any whole number from 1 to 5. The first year is at the registration price and each later year at the renewal price, and the total is shown before you pay.
  3. Pay with your saved card, or on the payment page. VAT is shown before you pay. Availability and price are checked again at that moment.

Buying from a Hosting service's page buys the domain for that service: once it is registered, its DNS is pointed at the service and HTTPS is issued, in one step. The check that the service can take a domain runs before you pay, never after.

After you pay

The domain shows a timeline from payment to a live site, built from the domain, its DNS and its certificate, so it is always current:

paymentstepThe charge cleared.
registrationstepThe registry holds the name. New .ng names can take hours to publish; most others take minutes.
dnsstepThe records point where they should.
connect, verifystepAttached to a service and seen pointing at it.
httpsstepThe certificate is issued.
livestepServing your site over HTTPS.

Steps are checked about every five minutes, and every minute for a name bought in the last few days. A failed step offers its fix: issue the certificate again, rewrite the DNS records, or contact support. A domain that is not attached to a service stops at registration.

If the registrar refuses a name after you paid, nothing was registered, the domain says so, and your payment is refunded. You can clear it from your list.

Renewals

Auto renewswitchRenews the domain once it is within 5 days of expiry, charging your saved card. It needs a saved card that can be charged automatically.
RemindersnoticeSent 30 days, 7 days, 1 day before expiry.
Failed chargesruleAfter 3 failed automatic charges in a row, automatic renewal stops trying. Renew by hand instead.
Renew by handactionAdd years at any time, as long as the name stays registered no more than 5 years ahead. The price, VAT and total are shown before you pay.

A renewal is priced from what the registrar that holds your domain charges to renew it, not from the price of a new registration, which is often a promotion. That is why a renewal can cost more than the first year did.

A domain that is not renewed in time shows as expired.

Transfers

Moving a domain to Dbrij

Enter the domain to get a quote first. The quote says whether it can move here, the price, what its nameservers are today, and the steps:

  1. At your current registrar, unlock the domain and ask for its authorization code. Some registrars call it an EPP code or a transfer key.
  2. Check the domain was registered, or last moved, more than 60 days ago. Registries refuse a move inside that window.
  3. Paste the code here and pay. The price adds a year to the registration, so no time already paid for is lost.
  4. Approve the email your current registrar may send. The move usually finishes within five to seven days.

Your DNS stays where it is during the move. If your current registrar runs your DNS, switch the domain to Dbrij nameservers first: some registrars stop answering the moment a name leaves them.

A quote refuses, with the reason, a name inside a domain (transfer the whole domain), a name nobody has registered, a name already registered through Dbrij, a name another Dbrij account uses, and an ending that cannot move here yet.

Where a transfer stands

awaiting_paymentstateCheckout started; nothing has been sent to the registry yet.
requestedstateSent. The registry is waiting on your current registrar.
needs_codestateThe authorization code was refused. Send the right one from the domain; nothing is paid again.
lockedstateThe domain is locked at your current registrar. Unlock it there and the move continues; nothing is paid again.
completedstateThe name is registered through Dbrij now.
failedstateIt did not go through. A refund is raised.
cancelledstateStopped before it finished. A refund is raised when money was taken.

Stopping a transfer

A transfer that has not been paid for is simply cancelled. One that is waiting, needs a code or is locked can be stopped while the registrar still allows it. Once the registry is actually moving the name it can no longer be stopped; it usually finishes within a week.

Refunds need approval

Nothing pays a transfer refund automatically, and no clock ever stops a transfer on its own. The moment money is owed back, the refund is raised so it cannot be forgotten, and then a Dbrij super admin approves it. A refused refund carries the reason, word for word. A transfer that goes nowhere for a long time is reviewed by a person, never timed out.

WHERE A REFUND GOES

carddefaultBack to the card that paid, reversing the charge.
walletyour choiceInto the space's balance, where it lands at once and can be spent. You can change the choice while the refund is pending.

Moving a domain away

Leaving is free and has no conditions. Ask for the authorization code on the domain and paste it at the new registrar; domains are never locked. Where a registrar will not hand the code back over its API, the domain says the code comes by email to the registrant and when to expect it.

Dbrij nameservers

Dbrij runs its own authoritative DNS. Point a domain at these nameservers once and every record is managed on Dbrij:

Nameserver 1ns1.dbrij.com
Nameserver 2ns2.dbrij.com

Switching a domain registered elsewhere

  1. Choose Dbrij nameservers on the domain. Dbrij copies the records it can find in the domain's public DNS into the new zone, including the names it already knows the domain uses (its hosted sites and email).
  2. Check the copied records before you change anything. A record missing from the zone stops working the moment the nameservers change.
  3. At your registrar, set the nameservers to the two above, in that order.
  4. Dbrij watches for the switch and marks the domain delegated once the world asks Dbrij. You can also check now.

Domains bought on Dbrij

A domain bought here starts on the registrar's DNS, which Dbrij writes for you. Where the registrar allows it, moving it to Dbrij nameservers needs no registrar visit: Dbrij copies every record first, then changes the nameservers itself. You can also point a domain bought here at another provider's nameservers: give at least two and at most 13, exactly as the provider lists them. Mixing Dbrij nameservers with another provider's is refused, because half your visitors would get different answers.

Leaving Dbrij nameservers

Taking a domain off Dbrij nameservers is refused while the world still asks them for its records. Change the nameservers at the registrar first.

DNS records

Who answers DNS for a domain decides whether Dbrij can write its records:

registrarDNS hostBought here, on the registrar's DNS. Dbrij writes the records for you.
dbrijDNS hostOn Dbrij nameservers. Dbrij hosts and writes the zone.
externalDNS hostAnother provider's nameservers. You add records there yourself; Dbrij tells you which.

Record types

Registrar DNStypesA, AAAA, CNAME, MX, TXT, URL, URL301, FRAME. URL, URL301 and FRAME are the registrar's redirect records.
Dbrij nameserverstypesA, AAAA, CNAME, MX, TXT, CAA, SRV. CAA (certificate policy) and SRV (calling and chat services) need Dbrij nameservers.

A RECORD

name*string"@" for the domain itself, or a host such as "www", "*" or "_dmarc".
type*stringOne of the types the domain's DNS host takes.
value*stringThe address, target or text.
ttlnumberSeconds. New records default to 1800.
prioritynumberMX only.

Records Dbrij manages

Records Dbrij created to point the domain at a Hosting service are marked as managed. Changing or deleting one breaks that attachment, so the editor keeps them locked until you unlock them on purpose. Saving the editor replaces the domain's whole record set with what you see.

Domains bought elsewhere

Connect a domain you registered somewhere else to use it with Hosting and get HTTPS for it, without moving the registration. Connect an exact name: the domain itself (example.com) or a subdomain (app.example.com). Dbrij returns the one record to add at your DNS provider:

Root domainA recordHost @, pointing at the addresses Dbrij shows. Also add a CNAME for www to the target shown, so www works too.
SubdomainCNAME recordHost: the subdomain label, pointing at the service's address on dbrij.app.

Verification and HTTPS follow on their own once the record is published. A root domain cannot hold a CNAME, which is why it takes an A record.

Connecting before the app exists

Connect a domain with no service and it verifies against the Dbrij edge and holds a real certificate on a reserved page until you attach it. When you do, it is already green. Each Hosting plan caps how many domains can wait like this at once; attaching one frees its place.

A name connected in another space

If the name is already connected in another Dbrij space or account, you prove you control its DNS instead: publish the TXT record Dbrij gives you at _dbrij-claim. followed by the name, then check. On a match the name moves to your space and connects.

Claim record
_dbrij-claim.example.com   TXT   <the value Dbrij shows>

HTTPS on a domain with nothing attached

Any active domain can be secured with HTTPS before it is attached to anything: it points at the Dbrij edge, where a reserved page answers over real HTTPS. A domain registered elsewhere needs one record added first. Pointing the domain's site somewhere else in its DNS switches the reserved page off.

offstateNot asked for.
pending_dnsstateAsked for, but the domain does not reach Dbrij yet.
issuingstateThe certificate is being issued.
activestateHTTPS works.
failedstateNeeds a person, with the reason.

Domains on Hosting

Attach a domain to a service

Attach an active domain to a Hosting web service and Dbrij points the domain itself and www at the service by default (you can choose just one), then issues HTTPS. Existing records such as MX and TXT are kept. Moving a domain to another service releases it from the old one first, since a domain serves one service at a time.

A domain points only at services in its own space. A service takes up to 3 domains; the www companion of a root domain is free. These limits are checked before any DNS is touched.

Subdomains

Point app.example.com, api.example.com or a deeper name such as api.staging.example.com at any service, on a domain bought here or connected. Give the label (app, api.staging, or @ for the domain itself) and the service. When Dbrij runs the DNS it writes the CNAME; otherwise it returns the record to add. HTTPS follows automatically.

A subdomain at your own DNS provider
app.example.com   CNAME   <service>.dbrij.app

From the Hosting side

A domain can also be added from a service's Domains tab in Hosting, which shows the same records, the verification state and HTTPS. See Custom domains in the Hosting docs.

Email on a domain

A company can run its email on its domain. Set it up from the domain: you choose the company the mailboxes belong to, and you must be able to manage that company's email. A company's domain carries that company's email, never another space's.

Bought hereone stepDbrij writes the MX, SPF and DKIM records into the domain's DNS and starts verification at once.
Connectedby handThe email domain lists the records; you add them at your DNS provider and it verifies once they are published.

When the records Dbrij issues for email change later, a domain bought here gets the new set written again automatically. How many email domains a company can carry follows its Hosting plan.

Spaces and access

A domain's owner can change it, and so can a member who manages Hosting in its company. Every other member of the company sees it read only: status, DNS and setup, but no buying, attaching, deleting or record changes.

Moving a personal domain into a company

  • Move your own personal domain into a company where you are the owner or manage Hosting. A domain serving a personal site has to be detached first.
  • A company owner or admin can ask a member to move a personal domain in. The member accepts or declines the request.

Buying from a Hosting service's page puts the domain in that service's space.

Public endpoints and AI tools

Two endpoints need no account. Every response is wrapped in an envelope: read your payload from data.

Base URLhttps://api.dbrij.com/api/v1

Search availability

POST /domains/search
curl -X POST https://api.dbrij.com/api/v1/domains/search \
  -H "Content-Type: application/json" \
  -d '{ "query": "acme", "scope": "global" }'

BODY

query*stringA name or a full domain, up to 253 characters.
scope"global" | "ng"Which catalogue. Defaults to global.
Response
{
  "success": true,
  "data": [
    {
      "domain": "acme.com.ng",
      "available": true,
      "premium": false,
      "priceNgnMinor": …,
      "renewPriceNgnMinor": …,
      "maxYears": 10,
      "registrable": true,
      "unsellableReason": null,
      "publish": { "phrase": "…", "note": "…", "measured": true }
    }
  ]
}

RESULT FIELDS

availablebooleanNobody holds the name.
premiumbooleanPriced by the registry above the usual price.
priceNgnMinornumberThe price to you for one year, in kobo.
renewPriceNgnMinornumberEach renewal year, in kobo: what renewing this name charges, from the registrar's own renewal price. Left out when the registrar publishes none, and for a premium name.
maxYearsnumberThe longest term this name can be registered for.
registrablebooleanFalse when the ending cannot be registered here.
unsellableReasonstring | nullWhy it cannot be bought here, when it cannot.
publishobject | nullHow long the registry usually takes to publish a new name of this ending.

What is on sale

GET /domains/catalogue
curl https://api.dbrij.com/api/v1/domains/catalogue

{ "success": true, "data": { "global": true, "ng": true, "ngTlds": ["ng", "com.ng", "org.ng", "net.ng", "i.ng", "name.ng", "sch.ng", "mobi.ng"], "transferIn": true, "dbrijDns": true } }

Each flag says whether that part of the product is available right now: the worldwide catalogue, the .ng catalogue, transfers in, and Dbrij nameservers.

AI assistants

An AI assistant connected over MCP (at mcp.dbrij.com, or locally with npx -y dbrij mcp) can read your domains and their DNS and add records, acting as you. It can never buy or remove a domain by itself: it files a request, you approve it on Dbrij, never in chat, and a request you do not decide expires after 15 minutes.

check_domainreadWhether a name is available to buy on Dbrij, and its yearly price.
list_my_domainsreadDomains in a space, with status, DNS host, attached service, HTTPS and expiry.
list_dns_recordsreadThe records of a domain whose DNS Dbrij manages. Records marked as managed by Dbrij are left alone.
add_dns_recordchangeAdd one record (A, AAAA, CNAME, MX, TXT, CAA, SRV; ttl 60 to 86,400 seconds). Existing records are kept; duplicates and CNAME clashes are refused. Changing or removing a record stays with you.
add_domainchangeAttach a domain you own to a Hosting web service and return the DNS record to create.
verify_domainchangeCheck a domain's DNS now.
list_domainsreadA Hosting service's domains, whether DNS and HTTPS work, and the record still needed.
request_domain_purchaserequestAsk to register an available name, optionally pointed at a web service. You approve the price on Dbrij.
request_domain_removalrequestAsk to detach a custom domain from a service. You approve by typing the domain.

Domains API

The Domains API is for a company whose own product gives its users domain names: a portfolio platform, a site builder, an agency tool. Your server checks names, registers them for your users, points them at your product and renews them, and your users never leave your product or touch a DNS record.

Who payswalletEvery order is paid from your company wallet on Dbrij, at the moment it is placed. Nobody is at a checkout, so no card is charged.
What it costspriceThe registrar fee plus your markup (8% unless agreed otherwise), in naira. That is the whole price: no VAT is added. What you charge your users is yours to set.
Who owns the nameregistrantYour user, whose details you send with the order. They can take the name to another registrar whenever they like.
If it failsrefundA registration or renewal the registry does not accept puts the full amount back in your wallet in the same step.

Before you start

  1. Apply from your company on Domains, Domains API. Say what your product does and roughly how many names you expect each month. We answer in the app and by email.
  2. Add money to the company wallet.
  3. Once you are approved, make a key on the same page. A test key (dbrij_test_) goes through every call and moves nothing; a live key (dbrij_live_) registers for real.
  4. Save the address your server receives events on, on the same page.
Base URLhttps://api.dbrij.com/api/v1/partner
AuthenticationAuthorization: Bearer YOUR_KEY

Before you go live

What the first integrations ran into. Each one is short, and each one matters.

1noteGive the register call 30 seconds, and always send an Idempotency-Key. A registration is answered within about 25 seconds. When the registry is slower than that, the order comes back with status processing and finishes by itself: read it again with GET /partner/orders/:id, send the same request with the same key, or wait for the domain.registered event. Never send a new key for an order you are unsure about, or it may be placed twice.
2noteThe first year and the renewal are two prices. A check returns priceMinor (the first year) and renewalMinor (each year after). Many extensions are cheaper in their first year, so show your user both before they choose.
3noteA short wallet answers 402, and nothing is charged. The body carries code partner_wallet_short, with needed (what the order costs) and available (what the wallet holds), both in kobo. Add money to the company wallet and send the request again.
4noteRecords you send with a registration are added, not swapped in. A new name starts on a holding page. Records in dns join what is there. Only a label you route yourself (an A, AAAA or CNAME you send) gives up the route it started with.
5notePut the records at your DNS provider before you move a name there. Moving a name to your own nameservers has no gap: Dbrij nameservers keep answering for it, as it was, for three days. Visitors reach your provider one resolver at a time, so both sides should give the same answer during the change.
6noteA name cannot change registrar in its first 60 days. That is the registry rule for every registrar. A transfer code asked for earlier answers with the date it can be released. Nothing here holds the name after that.
7noteNames never renew by themselves. No card is behind a name registered through the API. Your server is told 30, 7 and 1 days before a name runs out, and again when it has. Renew it once your user has paid you.
8noteCheck the signature on every event. X-Dbrij-Signature-V2 is t=TIMESTAMP,sha256=HMAC of TIMESTAMP.BODY with your signing secret. Compute it over the body exactly as it arrived, and refuse a timestamp more than five minutes old.

Every response is wrapped in an envelope: read your payload from data. Money is always in kobo, in naira. A refusal carries a full sentence in message that says what to change.

Check names and prices

POST /partner/domains/check
curl -X POST https://api.dbrij.com/api/v1/partner/domains/check \
  -H "Authorization: Bearer $DBRIJ_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domains": ["ada.cv", "adaobi.com"] }'
Response
{
  "success": true,
  "data": [
    { "domain": "ada.cv", "available": true, "premium": false, "priceMinor": …, "renewalMinor": …, "currency": "NGN", "reason": null },
    { "domain": "adaobi.com", "available": false, "premium": false, "priceMinor": …, "renewalMinor": …, "currency": "NGN", "reason": "That name is taken." }
  ]
}

Up to 20 names in one call. priceMinor is your price for one year, and it is the whole price. A premium name is priced by its registry and is not sold through the API.

Register a name for a user

POST /partner/domains
curl -X POST https://api.dbrij.com/api/v1/partner/domains \
  -H "Authorization: Bearer $DBRIJ_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-8f2c" \
  -d '{
    "domain": "ada.cv",
    "years": 1,
    "customerRef": "creator_42",
    "registrant": {
      "firstName": "Ada", "lastName": "Obi", "email": "ada@example.com", "phone": "+2348012345678",
      "address1": "1 Marina", "city": "Lagos", "state": "Lagos", "postalCode": "100001", "country": "NG"
    },
    "dns": [{ "name": "www", "type": "CNAME", "value": "sites.yourproduct.com" }]
  }'

BODY

domain*stringThe whole name, such as ada.cv.
yearsnumberA whole number from 1 to 5. Defaults to 1. A term longer than a year costs priceMinor for the first year plus renewalMinor for each further year.
customerRefstringYour own id for the user. It comes back on the name, its orders and its events.
registrant*objectThe user the name is for.
dnsrecord[]Records to set as soon as the name is registered, so it points at your product from the first minute.

REGISTRANT

firstName, lastName*stringThe person the name is for.
email*stringTheir email address.
phone*stringWith the country code, such as +2348012345678.
address1, city, state, postalCode*stringTheir postal address.
country*stringTwo letter country code, such as NG.
Response
{
  "success": true,
  "data": {
    "id": "…", "kind": "register", "domain": "ada.cv", "years": 1,
    "status": "completed", "customerRef": "creator_42",
    "amountMinor": …, "totalMinor": …, "currency": "NGN",
    "error": null, "test": false, "expiresAt": "2027-11-12T10:00:00.000Z",
    "replayed": false, "dnsApplied": true
  }
}

STATUS

completedstatusThe name is registered and your wallet paid totalMinor.
failedstatusThe registry did not accept it. The full amount is back in your wallet, and error says so.
processingstatusPaid for and not yet answered by the registry. The call does not wait longer than about 25 seconds: the order finishes by itself. Read it again, or wait for the event.

Always send an Idempotency-Key: any string you choose, one per order. If your request times out, send it again with the same key. You get the first answer back with replayed true, and nothing is registered or charged twice.

REFUSALS

400statusSomething in the request is wrong: the message says what. Nothing was charged.
402statusThe wallet is short. The body carries code partner_wallet_short, with needed (what the order costs) and available (what the wallet holds), both in kobo.
403statusThe Domains API is not switched on for this company, or the key does not carry the scope.
409statusThe name was taken before the order was placed. Nothing was charged.
429statusThe company has reached its daily order limit. Nothing was charged.

Read names and orders

GET /partner/domains, /partner/domains/:name, /partner/orders/:id
curl https://api.dbrij.com/api/v1/partner/domains?limit=50 -H "Authorization: Bearer $DBRIJ_KEY"
curl https://api.dbrij.com/api/v1/partner/domains/ada.cv -H "Authorization: Bearer $DBRIJ_KEY"
curl https://api.dbrij.com/api/v1/partner/orders/ORDER_ID -H "Authorization: Bearer $DBRIJ_KEY"

{ "success": true, "data": { "domain": "ada.cv", "status": "active", "customerRef": "creator_42",
  "registeredAt": "…", "expiresAt": "…", "nameservers": ["ns1.dbrij.com", "ns2.dbrij.com"], "dnsWritable": true } }

The list is newest first, up to 200 a page. For the next page, send before set to the registeredAt of the last name you were given.

Point a name with DNS records

Names registered through the API answer from Dbrij nameservers, which hold A, AAAA, CNAME, MX, TXT, CAA, SRV records. Use @ for the name itself.

Records
# Read
curl https://api.dbrij.com/api/v1/partner/domains/ada.cv/dns -H "Authorization: Bearer $DBRIJ_KEY"

# Add (a record already there is not added twice)
curl -X POST https://api.dbrij.com/api/v1/partner/domains/ada.cv/dns/records -H "Authorization: Bearer $DBRIJ_KEY" -H "Content-Type: application/json" \
  -d '{ "records": [{ "name": "@", "type": "A", "value": "203.0.113.10", "ttl": 300 }] }'

# Remove by name and type (and value, when you send one)
curl -X DELETE https://api.dbrij.com/api/v1/partner/domains/ada.cv/dns/records -H "Authorization: Bearer $DBRIJ_KEY" -H "Content-Type: application/json" \
  -d '{ "name": "www", "type": "CNAME" }'

# Replace every record with the ones you send
curl -X PUT https://api.dbrij.com/api/v1/partner/domains/ada.cv/dns -H "Authorization: Bearer $DBRIJ_KEY" -H "Content-Type: application/json" \
  -d '{ "records": [{ "name": "@", "type": "A", "value": "203.0.113.10" }] }'

A RECORD

name*string"@" for the name itself, or a label such as "www".
type*stringOne of A, AAAA, CNAME, MX, TXT, CAA, SRV.
value*stringWhere it points, or the text it holds.
ttlnumberSeconds, from 60 to 86400. Defaults to 1800.
prioritynumberMX records only. Defaults to 10.

The name itself (@) takes an A or AAAA record here. Dbrij nameservers do not serve ALIAS, ANAME or a flattened CNAME. If your hosting gives you a hostname and no fixed address for the bare name, use your own DNS provider's nameservers, below.

Use your own nameservers

If your users' sites sit behind your own DNS provider, hand each name to it. Register the name, add it at your provider (that is where you are given its nameservers), then send those nameservers here.

PUT and DELETE /partner/domains/:name/nameservers
# Move the name to your provider's nameservers
curl -X PUT https://api.dbrij.com/api/v1/partner/domains/ada.cv/nameservers -H "Authorization: Bearer $DBRIJ_KEY" -H "Content-Type: application/json" \
  -d '{ "nameservers": ["ada.ns.yourprovider.com", "bob.ns.yourprovider.com"] }'

{ "success": true, "data": { "domain": "ada.cv", "status": "active", "customerRef": "creator_42",
  "registeredAt": "…", "expiresAt": "…", "nameservers": ["ada.ns.yourprovider.com", "bob.ns.yourprovider.com"], "dnsWritable": false } }

# Bring it back onto Dbrij nameservers
curl -X DELETE https://api.dbrij.com/api/v1/partner/domains/ada.cv/nameservers -H "Authorization: Bearer $DBRIJ_KEY"

WHAT TO EXPECT

nameservers*string[]From 2 to 13 names, exactly as your provider lists them.
Refused with 400checkWhen none of those nameservers answers for the name yet. Add the name at your provider first, then send the call again. A name is never pointed at servers that do not know it.
After the moverecordsYou manage every record at your provider. The record calls above refuse for that name, and dnsWritable is false.
Until the movepageA new name answers from Dbrij nameservers and shows a plain holding page.
Coming backcopyWhat the name publicly answers today is copied into its Dbrij zone first, so nothing changes but who answers.
How longtimeThe registry can take an hour or more to publish a nameserver change, and resolvers follow as their cached answers run out. Dbrij nameservers keep answering for the name, with the records it had, for three days after the move, so nobody is left without an answer in between.
Before you moverecordsGive your provider the records the name should have first. Visitors reach your provider one resolver at a time, so both sides should give the same answer during the change.

Renew

POST /partner/domains/:name/renew
curl -X POST https://api.dbrij.com/api/v1/partner/domains/ada.cv/renew \
  -H "Authorization: Bearer $DBRIJ_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: renew-ada-2027" \
  -d '{ "years": 1 }'

A name registered through the API never renews by itself, because no card is on file for it. You are told 30, 7 and 1 days before it runs out and again when it has, and you renew it once your user has paid you. The answer is an order, read the same way as a registration.

Let a user leave with their name

POST /partner/domains/:name/release
curl -X POST https://api.dbrij.com/api/v1/partner/domains/ada.cv/release -H "Authorization: Bearer $DBRIJ_KEY"

{ "success": true, "data": { "domain": "ada.cv", "authCode": "…", "released": true, "manualRelease": null } }

This returns the authorization code a new registrar asks for. Nothing is charged and nothing holds the name here. Give the code to your user: the name is theirs.

Your balance

GET /partner/balance
curl https://api.dbrij.com/api/v1/partner/balance -H "Authorization: Bearer $DBRIJ_KEY"

{ "success": true, "data": { "availableMinor": …, "currency": "NGN", "markupBps": 800, "ordersToday": 3, "dailyOrderLimit": 200 } }

Events

Dbrij posts these to the address you saved, as JSON, so your product can act without asking.

domain.registeredeventA name is registered. Carries domain, customerRef, orderId, expiresAt and nameservers.
domain.failedeventA registration was not accepted and has been refunded to your wallet.
domain.renewedeventA renewal went through. Carries the new expiresAt.
domain.renewal_dueeventA name runs out soon. Carries daysLeft and expiresAt.
domain.expiredeventA name has passed its date without being renewed.

Each delivery is signed with the secret shown once when you saved the address. Verify X-Dbrij-Signature-V2, which is t=TIMESTAMP,sha256=HMAC of TIMESTAMP.BODY with your secret, and refuse one whose timestamp is more than five minutes old.

Events sent: domain.registered, domain.failed, domain.renewed, domain.renewal_due, domain.expired. See the Domains API terms for what you agree to pass on to your users.

Dbrij is Nigeria’s company operating system: the first Nigerian built platform to put team chat, video meetings, email, HR, tax compliant payroll, customer support, marketing, analytics and cloud hosting in one product on one subscription.

Everything on Dbrij

More from Dbrij