Plenty of work needs a public hostname for an afternoon. A callback target while a webhook is being built. A demo that has to be reachable by name rather than by address. An agent that must be addressable for the length of one job. The name is needed for an hour, and the usual path is to register something, wait for it to spread, and then forget to clean it up. Here the cleanup is the default.
What it does
One request with the address you want it to point at gives back a name of the form aisense-slug.53for24h.com, an A record with a TTL of 60 seconds, and a token that is shown once. The name lives for 24 hours from creation. Nothing renews it.
curl -s -X POST https://aisenseapi.com/services/v1/dns \
-H 'Content-Type: application/json' \
-d '{"ip": "203.0.113.10"}'
The answer carries the name, the record, the address, the TTL, the expiry, the two name servers and the zone's serial. Reading it back needs nothing at all, since everything in it is already public in DNS. Changing the address or removing the name needs the token.
| Call | Token | Does |
|---|---|---|
POST /services/v1/dns | None | Create a name. The address must be a public unicast address |
GET /services/v1/dns/{slug} | None | Read what the name currently says |
POST /services/v1/dns/{slug}/update | Bearer | Point it somewhere else. The expiry does not move |
DELETE /services/v1/dns/{slug} | Bearer | Remove it from both name servers at once |
The same four operations are MCP tools, so an agent can do this without an HTTP client of its own: create_dns_name, read_dns_name, update_dns_name and delete_dns_name on the free MCP server.
Measured this evening
We ran the whole cycle from outside, against the live service, before writing this.
| Step | What happened |
|---|---|
| Create | 201 in 0.23 seconds, with the name, TTL 60 and an expiry 24 hours out |
| Resolve | The same address from both name servers and from a public resolver immediately after |
| Read | 200, the same record, no token needed |
| Delete | 200, and neither name server answered for the name afterwards |
| An unknown name in the zone | NXDOMAIN from both |
| A name outside the zone | REFUSED from both, which is what an authoritative server should say |
| The zone itself | Same serial from both servers over TCP, before and after the change |
The shape of it
Create it, use it, and let it expire.
A name that outlives the work becomes something to inventory, secure and eventually explain. A name with 24 hours on it never becomes anything.
Two servers, two places
The zone is served by two name servers, ns1.aisenseapi.com and ns2.aisenseapi.com, on separate machines at separate sites, and the delegation for 53for24h.com points at them at the registry. A change written through the API reaches both, and both report the same zone serial. Everything else in DNS is left alone: the service serves this one zone and answers REFUSED for anything outside it.
Limits, and what this is not
The pilot allows 20 names per client address per UTC day and 100 active names in total. The TTL menu has one item, 60 seconds, because a short-lived name with a long TTL is a name that keeps answering after it is gone. Names are public: they are in DNS, they can be enumerated by anyone watching, and nothing private belongs in one.
This is a pilot, and we are not quoting a query rate. The capacity of the running daemon has not been measured, so any number here would be a guess. What is measured is above, and it is one cycle rather than a load test.
Take one
No account, no API key, and it cleans up after itself.
The DNS calls sit with the rest of the free public API, and the four MCP tools are on the same free MCP server as the other tools.