Skip to content
API & Command line

One API in front of every provider you manage.

The Unolia REST API exposes the normalized project layer behind scoped tokens, from your code over REST or from your terminal with the unolia CLI. Your scripts stop juggling one credential and one client library per provider.

works today
$ curl https://app.unolia.com/api/v1/domains -H "Authorization: Bearer uno_k8Ts…"
{ "data": [ { "domain": "atelier-nord.fr", "provider": "gandi", "records": 14 }, { "domain": "loopline.app", "provider": "cloudflare", "records": 22 }, { "domain": "fermeduport.fr", "provider": "gandi", "records": 9 } ], "meta": { "total": 12 } }
Twelve registrars, one shape of answer
Base URL · app.unolia.com/api/v1 Auth · Bearer token Format · JSON CLI · unolia Docs · app.unolia.com/docs →

Work in progress: the DNS endpoints are live today, the rest of the surface opens very soon. We are looking for testers. Become a tester →

What is the Unolia API?

The Unolia API gives developers and scripts structured access to the layer Unolia normalizes across providers, over REST or through the unolia command line. Live today: authentication, the current user and token, teams, domains and DNS records, behind personal and team tokens with granular scopes. The rest of the surface, projects, deployments, monitoring, costs and activity, opens to the public as it stabilizes, and what a token may do always follows your plan and your role on the team.

Unified

Every provider, one grammar.

Behind the API sits the same normalization layer as the dashboard: a DNS record has one shape whether the zone lives at Gandi, OVHcloud or Cloudflare. Write the script once, run it on every client, and stop reading provider changelogs.

  • The same record shape at every registrar.
  • The same call from curl or from the CLI.
  • The same layer the dashboard itself uses.
One call, three registrars same shape
atelier-nord.fr Gandi
maisonverdier.com OVHcloud
loopline.app Cloudflare
POST /domains/{domain}/records
{ "type": "MX", "name": "@", "value": "mail.example.com" }
Your script stops caring who hosts the zone
The ideas

What will you build first?

The point of one normalized API is everything it makes ordinary. The first two run today on the DNS endpoints, the rest follow as the surface opens.

DNS from your pipeline

The deploy creates the records it needs on its own: the preview subdomain, the verification TXT, the CDN CNAME.

Nightly zone backups

A 02:00 cron exports every record of every client domain into git. Ten lines of insurance against a very bad day.

A client onboarded in one command

Project created, domains attached, monitors set, team invited. Signing a new client becomes a script you run.

Spend, straight into invoicing

At the end of each month, per-project costs flow into your billing tool and the margin per client computes itself.

A custom dashboard

Uptime, deploys and activity behind your own brand, for your team or your clients. One Laravel route is enough to start.

The reference

The surface, as it opens

Domains & DNS

live today

Every client domain in the same shape, whatever the registrar. The DNS side of the product, scriptable.

GET /domains
GET /domains/{domain}
POST /domains/{domain}/records
PUT /records/{record}
DELETE /records/{record}
$ curl -X POST …/api/v1/domains/atelier-nord.fr/records \
-d '{ "type": "TXT", "name": "_acme", "value": "…" }'
201 Created · pushed to the registrar, written to the activity log

Teams & tokens

live today
GET /teams
GET /current/token

Projects

in progress
GET /projects
GET /projects/{project}/resources

The whole client file, scriptable.

Deployments

in progress
POST /websites/{website}/deployments
GET /deployments/{deployment}/log

Deploy from CI, whoever does the hosting.

Monitoring

in progress
GET /monitors
POST /monitors

Watch a site the second it ships.

Issues

in progress
GET /issues?severity=error
POST /issues/{issue}/fix

Every finding Unolia raises, its fix one call away.

Automations

in progress
POST /automations/{automation}/runs
GET /runs/{run}

Trigger a recipe from anywhere, read the run record back.

Costs

in progress
GET /projects/{project}/costs

Per-project spend, straight into your invoicing.

Activity

in progress
GET /activity?project=…

The agency flight recorder, queryable.

Webhooks

in progress
POST /webhooks

Unolia events pushed into your stack.

The in-progress chapters open with the product, testers see them first

The command line

The terminal speaks it too.

Everything the API exposes, the unolia CLI wraps: same endpoints, same tokens, same scopes. Made for cron jobs, CI steps and the one-liner you run before answering a client.

The CLI ships alongside the public API

Two dialects REST · CLI
$ curl -H "Authorization: Bearer uno_…" …/api/v1/domains
200 · 12 domains
$ unolia domains:list
the same 12, in your terminal
Same tokens, same scopes, same answer
API tokens · Studio Méridien 2 active
ci-deploy-bot team token
domains:read records:write
nightly-backup personal token · Nadia
domains:read
Narrowed live by the plan and the member’s role
The same scopes power the AI tools
Tokens

Scoped like a teammate, not like a master key.

Personal tokens act as you, team tokens act as the agency, and both carry granular scopes. Whatever a token claims, the live layer narrows it to what your plan and your current role actually allow, and answers with an honest 402 instead of a surprise.

Read the full reference →

How this grows with your plan

See pricing →
Developer

Read-only API access with personal tokens.

Freelancer

Write access and team-owned tokens.

Startup

Token reach follows each member's live role.

Business

Custom roles shape the same tokens.

Related feature pages

Be one of the first to build on it.

Join the waitlist, tell us what you want to script, and get the API before everyone else.

Join the waitlist