Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: BorgLayer Transfer In API
version: 1.0.0
description: 'The BorgLayer API lets you — and AI agents, via the BorgLayer MCP connector —
search and register domains, transfer domains in, manage DNS, set registrant
details, and form US LLCs, all paid from a prepaid USDC account balance.
- **Base URL:** `https://api.borglayer.com/api/v1`
- **MCP connector:** `https://mcp.borglayer.com/mcp` (Streamable HTTP)
- **Auth:** `Authorization: Bearer blrk_…` on every request
## Getting started
1. Create a BorgLayer account and an API key (format `blrk_…`) in your
dashboard. Each key has **scopes** that limit what it can do and is bound
to your account''s prepaid USDC balance.
2. Call the API with `Authorization: Bearer blrk_…`, or add the MCP connector
in Claude (**Customize → Connectors → Add custom connector**) with URL
`https://mcp.borglayer.com/mcp`, Authentication **No sign-in**, and request
header `Authorization: Bearer blrk_…`.
3. Top up your prepaid balance in the dashboard. Read actions are free; actions
that cost money (register, transfer-in, formation) debit your balance.
## Money model
Actions that cost money debit your prepaid USDC balance. If the balance is too
low the API returns `402 insufficient_balance` and **nothing is charged**.
## Scopes
| Scope | Grants |
|-------|--------|
| `domains.read` | search, list your domains |
| `domains.register` | register a domain (debits balance) |
| `domains.transfer` | transfer a domain in (may debit balance) |
| `dns.read` | list DNS records |
| `dns.write` | add/delete DNS records |
| `registrant.read` | list registrant profiles |
| `registrant.write` | create/delete registrant profiles |
| `formation.read` | quote a formation, read order status |
| `formation.write` | create (file) a formation (debits balance) |
| `balance.read` | read your prepaid balance |
A `403` with `required scope: ` means your key lacks that scope.'
contact:
name: BorgLayer
url: https://borglayer.com
email: support@borglayer.com
servers:
- url: https://api.borglayer.com/api/v1
description: Production
security:
- ApiKey: []
tags:
- name: Transfer In
paths:
/transfer-in:
post:
summary: Transfer a domain in from another registrar
description: 'Transfer a domain you own at another registrar into BorgLayer. Needs the
auth/EPP code from your current registrar, and the domain must be unlocked
there. Free for free ccTLDs; others include a 1-year extension debited from
balance. Scope: `domains.transfer`. `whois_privacy` is honored only for TLDs
that support it and ignored otherwise.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- domain
- auth_code
properties:
domain:
type: string
example: example.com
auth_code:
type: string
whois_privacy:
type: boolean
default: true
responses:
'200':
description: Transfer started
tags:
- Transfer In
operationId: postTransferIn
x-operation-id-source: derived
components:
securitySchemes:
ApiKey:
type: http
scheme: bearer
bearerFormat: blrk_…