Put a custom domain on your API with TLS

How do I put my brand on my API?

Serve it from your own domain, like api.ninopizzas.com, with a valid HTTPS certificate, instead of your hosting provider’s address.

Pointing a domain is easy. The certificate, its renewals and every other address your users see is where it gets fiddly. Here’s why, and the easy way to solve it.

Skip to the one-command way
1 Why it’s hard

Pointing a domain is easy. The certificate is the work.

For your name to show up with a padlock on every call, every address needs its own certificate, and every certificate has to keep renewing:

One year of certificates, for one API

1 address down
JFMAMJJASOND
  • api.ninopizzas.com

  • mcp.ninopizzas.com

  • developers.ninopizzas.com

  • login.ninopizzas.com

  • ownership proved
  • renewed
  • renewal failed
  • expired

login.ninopizzas.com: the July renewal failed quietly. In August the old certificate ran out, and every sign-in failed until someone noticed.

  • Prove you own each name first

    The certificate authority checks before it issues anything for your name.

  • Renew before it runs out

    Certificates expire every few months, on every address.

  • Keep the HTTPS settings modern

    Old TLS versions switched off, or security reviews flag your API.

Get it right, and it’s the same API with your name on it

Everyone who calls your API sees your domain, with a valid certificate.

Before
Nino’s Pizza API
https://ninopizzas.abz.run/restaurants

Your API on an APIblaze address

Address
ninopizzas.abz.run
Whose name callers see
APIblaze’s
Certificate
Issued to APIblaze’s domain
Protocol
HTTPS, TLS 1.2 or newer
After
Nino’s Pizza API
https://api.ninopizzas.com/restaurants

Connection is secure, on your own domain

Address
api.ninopizzas.com
Whose name callers see
Yours
Certificate
Issued to api.ninopizzas.com, renewed for you
Protocol
HTTPS, TLS 1.2 or newer
There’s a shorter way to get there.
2 The shortcut

Put your API on your own domain with one command

APIblaze handles the certificate and everything around it. Point it at your API, then add your domain:

Put APIblaze in front of your API

$ npx apiblaze@latest create --target https://ninopizzas.com/openapi.yaml

Paste it in a terminal. No servers to run. The link is a sample restaurant API; swap in your own. Then add your domain, as shown below.

How can it hold a certificate for a domain it doesn’t host?
3 Why it works

APIblaze is an API proxy: every request passes through it first

It sits between the people calling your API and your API itself. Calls to your domain arrive at APIblaze first, and APIblaze passes them on to your API, wherever it runs.

Callers

  • Ana’s booking appasks to call api.ninopizzas.com
  • Claude, via your connectorasks to call mcp.ninopizzas.com
  • An old client on TLS 1.0asks to connect

APIblaze

The API proxy

Answers on your own domain with its certificate, keeps it renewed, then passes each call to your API.

TLS 1.2 or newer only

Your API

Only sees the calls APIblaze lets through.

Never reached your code.

That’s why it’s the right place for your domain. HTTPS ends at APIblaze, so it can hold the certificate for every address your users see and keep it renewed, while your API stays where it is. All it takes from you is one DNS record:

api.ninopizzas.comActive

Calls to your domain reach your API over HTTPS, with all your rules.

The one record you add

At your DNS provider, the same place your website’s records live.

TypeCNAME
Nameapi
Targetproxy.abz.run

DNS on Cloudflare? Set the record to DNS only (the gray cloud), not proxied.

Here is what setting it up looks like.
4 How to do it

Your name on your API, step by step

  1. 1

    Pick the addresses you want on your name

    Your API is one of four places people see an address. Each one can carry your domain. Replace myapi and ninopizzas with your project and tenant.

    Your API

    https://api.ninopizzas.com

    $ npx apiblaze@latest domain add myapi --domain api.ninopizzas.com

    Its MCP server

    https://mcp.ninopizzas.com

    Claude’s and ChatGPT’s connector directories expect this one on your own domain.

    $ npx apiblaze@latest domain add myapi --domain mcp.ninopizzas.com --kind mcp

    Its developer portal

    https://developers.ninopizzas.com

    $ npx apiblaze@latest domain add --tenant ninopizzas --kind portal --domain developers.ninopizzas.com

    Its login pages

    https://login.ninopizzas.com

    $ npx apiblaze@latest domain add --tenant ninopizzas --kind auth --domain login.ninopizzas.com

    Prefer the dashboard? The API and MCP domains are under the project’s Custom Domains; the portal and login pages under Tenants → Custom domains.

  2. 2

    Add the one DNS record it shows you

    Add it wherever you manage your domain. The domain then goes from Pending DNS to Verifying SSL to Active on its own, and the certificate is renewed for you from then on.

Claude and ChatGPT connectors

Your API, ready for Claude’s and ChatGPT’s directories

Both connector directories want your MCP server on your own domain, and it is one of the first things they check. APIblaze sets up the domain and the rest of what they ask for, then hands you the submission packet to send in.

Claude’s directory policy

“The MCP server domain should match your service.”

ChatGPT’s app review

Checks a verification file on your domain.

APIblaze serves it there for you.

1. Your domain

TypeCNAME
Namemcp
Targetproxy.abz.run
mcp.ninopizzas.comActive

The address both directories expect to see.

2. Directory-ready

Readiness report

  • MCP server on your own domain
  • Sign-in Claude and ChatGPT can use
  • ChatGPT’s domain check, served on your domain
  • Listing: name, tagline, privacy page, support
  • Reviewer test account
Claude: ready ChatGPT: ready

Submission packet written. You send it in.

3. In your users’ AI assistant

Nino’s Pizzamcp.ninopizzas.comConnected

Book a table for 2 at Nino’s tomorrow at 8 pm.

createReservation

Done. A table for 2 at Nino’s, tomorrow at 8 pm.

From your terminal

  1. Put your MCP server on your own domain

    $ npx apiblaze@latest domain add myapi --domain mcp.ninopizzas.com --kind mcp
  2. Check everything, apply the safe fixes, fill in what’s missing and write the submission packet

    $ npx apiblaze@latest connector myapi
  3. See the readiness report any time, without changing anything

    $ npx apiblaze@latest check --directory-ready myapi

Or in the dashboard

Switch on Directory-ready in your project’s Directory section. Its Readiness report lists every blocker with its fix, and Apply safe fixes handles the ones APIblaze can.

Common questions

  1. What is an API proxy?

    A service that sits in front of your API. Every request reaches it first, so it can answer on your own domain with your certificate and pass the call on to your API. APIblaze is an API proxy.

  2. Do I need to buy or upload a certificate?

    No. APIblaze has a certificate issued for your exact hostname, and Cloudflare, which serves it, keeps it renewed.

  3. Which HTTPS (TLS) versions are allowed?

    TLS 1.2 and newer.

  4. How do I know when it is live?

    The domain moves from Pending DNS to Verifying SSL to Active. The dashboard shows it, and npx apiblaze@latest domain status prints any DNS record still missing.

  5. My DNS is on Cloudflare. Anything special?

    Set the record to DNS only (the gray cloud), not proxied.

  6. Can I use my root domain, like ninopizzas.com?

    Use a subdomain such as api.ninopizzas.com.

  7. Do I need my own domain for a Claude connector?

    To be listed in Claude’s or ChatGPT’s connector directory, yes: both expect the MCP server on your own domain. Add it with domain add --kind mcp, then npx apiblaze@latest connector checks the rest and writes the submission packet.

  8. What does it cost, and how do I stop?

    Each domain is billed monthly; prices are on the pricing page. If a monthly charge can’t be paid, the domain is suspended until you add credit. npx apiblaze@latest domain rm removes it and billing stops.

Prices are on the pricing page.

Put your brand on your API today

One command, then one DNS record. No certificates to manage.

$ npx apiblaze@latest create --target https://ninopizzas.com/openapi.yaml
Using an AI coding assistant? Paste this into Claude Code or Codex:Put my API on my own domain using npx apiblaze@latest skills