Every EdgeSpark project ships behind a platform-managed default URL likeDocumentation Index
Fetch the complete documentation index at: https://docs.edgespark.dev/llms.txt
Use this file to discover all available pages before exploring further.
your-project.edgespark.app. To serve your own purchased hostname instead, use the edgespark domain family of CLI commands. The CLI prints exactly the DNS records you need; the platform handles ownership verification, EdgeSpark routing, and TLS certificate issuance.
You stay in your project directory the whole time. Each command resolves the project from edgespark.toml and your authenticated CLI session.
Add a domain
CNAME makes traffic flow, and the TXT is what EdgeSpark uses to prove the domain belongs to you. The <scoped> segment of the TXT name is derived from your project ID, so two projects can never claim the same hostname with conflicting tokens.
If your DNS provider supports domain-connect, add may also print a Setup URL you can open to add the records with one click instead of copy-pasting.
EdgeSpark uses a
TXT ownership challenge — there is no nameserver delegation. Your existing DNS provider stays in charge.Verify activation
After publishing the DNS records, wait for the domain to flip active:--timeout accepts ms, s, m, h units (e.g. 90s, 5m, 1h).
When activation succeeds:
verify later. The domain is not lost — it stays registered on the project.
Inspect a domain
status is a one-shot read of where a domain stands. It does not poll:
Status, the platform’s view of routing health (EdgeSpark routing), the TLS certificate state (SSL), any warnings, and the DNS records still pending if setup is incomplete.
Status is the high-level activation flag. EdgeSpark routing and SSL are independent, finer-grained strings sourced from the platform’s CDN integration — when a domain is stuck in pending, look at those two fields to tell DNS-side problems apart from TLS-issuance problems.
Use status for spot checks; use verify when you want the CLI to wait.
List domains
Remove a domain
CNAME and TXT records at the source.
Domain status values
The high-levelStatus field can take five values:
| Status | Meaning | What to do |
|---|---|---|
pending | Registered; ownership / routing / TLS not yet all confirmed | Confirm the records are published, then edgespark domain verify. Check EdgeSpark routing and SSL to see which step is still in flight. |
active | Live and serving traffic with a valid certificate | Visit the URL — traffic is on. |
failed | Setup hit a permanent error | Read the warning in edgespark domain status (and the error_message field), fix the underlying issue (typo in records, CAA blocking issuance), and re-run edgespark domain verify. |
removing | Detachment is in progress on the platform side | Wait. domain status will flip to removed. |
removed | Detachment completed | The hostname is free for re-add via edgespark domain add. |
status and verify also surface a free-form error_message field when the platform has a specific reason for a non-active state.
Apex versus subdomain
Both shapes work — the CLI prints the right records for each:- Subdomain (
app.example.com) — aCNAMErecord where the host is the full hostname. - Apex (
example.com) — the sameCNAMErecord, but with@as the host. Your DNS provider must support CNAME flattening at the apex — Cloudflare, Route 53, DNSimple, Vercel DNS, and others do; some legacy registrars do not. If yours does not support flattening, choose a subdomain instead.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
pending after publishing records | DNS has not propagated, or an extra record is shadowing yours | dig app.example.com and dig TXT _edgespark-verify-<scoped>.app.example.com to confirm what the world sees. |
pending with EdgeSpark routing: active but SSL not active | Certificate issuance is in flight or blocked | Check for a restrictive CAA record on the apex; either add the EdgeSpark CA or remove the restrictive entry. Otherwise wait. |
failed with a CAA mention in error_message | Existing CAA record blocks the certificate authority EdgeSpark uses | Update the CAA record set, then edgespark domain verify. |
verify exits with status still pending after 15 minutes | Slow registrar or large TTL | Re-run with --timeout 30m (or longer). The domain stays attached between attempts. |
Project ID required (exit code 2) | Command was run outside a project directory or edgespark.toml is missing | cd into the project, or set EDGESPARK_PROJECT_ID for one-off runs. |
See also
Deploy your project
Ship a build and learn the default project URL the platform issues.
Environments
The current single-environment model and how custom domains fit it.