Shortnd Docs

Domains and Slugs

Manage custom domains, verify routing, and reserve vanity slugs.

Custom domains are organization assets.

For the current client model:

  • acme.com
  • example.io

should be attached to the same tenant organization if the same admin team manages them.

Shortnd manages branded links as exact hostnames owned by an organization. That means a tenant can onboard:

  • an apex hostname such as acme.com
  • a subdomain hostname such as go.acme.com

Each hostname has its own ownership, routing, SSL, and activation lifecycle.

  1. Approve and review the domain in the dashboard.
  2. Create or confirm the custom domain record with POST /api/v1/domains.
  3. Add the TXT ownership record and the routing record returned by the API.
  4. Trigger verification with POST /api/v1/domains/{id}/verify.
  5. Wait for SSL activation before treating the hostname as live.
  6. Create operational links through POST /api/v1/urls with the domain ID.

DNS model

  • The TXT token proves domain ownership. It does not route traffic.
  • Apex hostnames route through A records or provider-level ALIAS/ANAME at your DNS provider.
  • Subdomain hostnames route through a CNAME back to Shortnd infrastructure.
  • A domain is only ready when ownership verification, routing verification, and SSL activation all succeed.

Example DNS records for go.acme.com:

  • TXT host: _shortnd-verify.go
  • TXT value: <verification token>
  • CNAME host: go.acme.com
  • CNAME target: cname.shortnd.com

Custom slug behavior

Slug uniqueness depends on the namespace.

  • Platform-domain slugs must be globally unique.
  • Custom-domain slugs are unique within that specific custom domain.

That lets one tenant automate user-facing slugs for acme.com and example.io independently while keeping each domain safe from collisions.

Example

curl -X POST https://shortnd.com/api/v1/urls \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d '{
    "targetUrl": "https://example.io/onboarding",
    "customSlug": "welcome",
    "domainId": "domain_uuid"
  }'