FunnelFlux Pro API DocumentsFunnelFlux Pro API Documents
  • Changelog
  • Status
  • Dashboard
  • Documentation
  • Authentication
  • Domains
  • Assets
  • Reporting
Information
Domains
    List all domainsgetCreate a new domainpostCheck domain configurationpostGet domain detailsgetDelete a domaindeleteRefresh domain statuspost
Schemas
FunnelFlux Custom Domains API
FunnelFlux Custom Domains API

Domains

Download schema

Custom domain management


List all domains

GET
https://api.funnelflux.pro/v1/billing
/domains

Returns all domains for the authenticated user from Ledger.

Note: This is a fast operation that returns Ledger data only. Status fields may be empty - use the Refresh endpoint to get fresh Cloudflare status for individual domains.

List all domains › Responses

List of domains

ListDomainsResponse
success
​boolean
​DomainSummary[]
error_code
​string

Error code if listing failed

error_message
​string

Human-readable error description

GET/domains
curl --request GET \ --url https://api.funnelflux.pro/v1/billing/domains
Example Responses
{ "success": true, "domains": [ { "id": "id", "domain": "domain", "cloudflare_id": "cloudflare_id", "status": "status", "ssl_status": "ssl_status", "verification_errors": [ "string" ], "created_at": "created_at" } ], "error_code": "error_code", "error_message": "error_message" }
json
application/json

Create a new domain

POST
https://api.funnelflux.pro/v1/billing
/domains

Creates a new custom domain for the authenticated user.

Registers domain ownership, provisions the custom hostname, and returns DNS validation records that the user must add.

Create a new domain › Request Body

CreateDomainRequest
domain
​string · required

Domain hostname to add (e.g., track.example.com)

Create a new domain › Responses

Domain created successfully

CreateDomainResponse
success
​boolean
​DomainInfo
error_code
​string

Error code if creation failed (e.g., DOMAIN_EXISTS, DOMAIN_ALREADY_OWNED)

error_message
​string

Human-readable error description

message
​string

Success message

POST/domains
curl --request POST \ --url https://api.funnelflux.pro/v1/billing/domains \ --header 'Content-Type: application/json' \ --data ' { "domain": "domain" } '
Example Request Body
{ "domain": "domain" }
json
Example Responses
{ "success": true, "domain": { "id": "id", "domain": "domain", "owner": "owner", "created_at": "created_at", "cloudflare_id": "cloudflare_id", "status": "pending", "ssl": { "status": "status", "txt_name": "txt_name", "txt_value": "txt_value" }, "ownership_verification": { "type": "type", "name": "name", "value": "value" }, "verification_errors": [ "string" ], "parsed": { "subdomain": "subdomain", "root_domain": "root_domain" } }, "error_code": "error_code", "error_message": "error_message", "message": "message" }
json
application/json

Check domain configuration

POST
https://api.funnelflux.pro/v1/billing
/domains/check

Verifies that a domain is correctly configured to route to FunnelFlux.

Performs:

  • HTTP request to {domain}/debug/domain-check
  • TLS handshake validation
  • Response verification

Note: Requires authentication for rate limiting and audit logging.

Check domain configuration › Request Body

CheckDomainRequest
domain
​string · required

Domain hostname to check (e.g., track.example.com)

Check domain configuration › Responses

Domain check result

CheckDomainResponse
success
​boolean · required
found
​boolean · required

Domain routes to FunnelFlux (redirect check passed)

ssl_valid
​boolean · required

SSL certificate is valid (TLS handshake succeeded)

http_status
​integer

HTTP status from debug endpoint

ssl_error
​string

SSL error message if TLS failed

response_time_ms
​integer · int64

Response time in milliseconds

error_message
​string

Error message if check failed

check_timestamp
​integer · int64

Unix timestamp when check was performed

cloudflare_status
​string

Cloudflare hostname status (pending, active, moved, deleted)

cloudflare_ssl_status
​string

Cloudflare SSL status (initializing, pending_validation, active)

POST/domains/check
curl --request POST \ --url https://api.funnelflux.pro/v1/billing/domains/check \ --header 'Content-Type: application/json' \ --data ' { "domain": "domain" } '
Example Request Body
{ "domain": "domain" }
json
Example Responses
{ "success": true, "found": true, "http_status": 0, "ssl_valid": true, "ssl_error": "ssl_error", "response_time_ms": 0, "error_message": "error_message", "check_timestamp": 0, "cloudflare_status": "cloudflare_status", "cloudflare_ssl_status": "cloudflare_ssl_status" }
json
application/json

Get domain details

GET
https://api.funnelflux.pro/v1/billing
/domains/{domain}

Returns detailed information about a specific domain including Cloudflare status and DNS validation records.

Get domain details › path Parameters

domain
​string · required

Domain hostname (e.g., track.example.com)

Get domain details › Responses

Domain details

GetDomainResponse
success
​boolean
​DomainInfo
error_code
​string

Error code if lookup failed (e.g., NOT_FOUND)

error_message
​string

Human-readable error description

GET/domains/{domain}
curl --request GET \ --url https://api.funnelflux.pro/v1/billing/domains/:domain
Example Responses
{ "success": true, "domain": { "id": "id", "domain": "domain", "owner": "owner", "created_at": "created_at", "cloudflare_id": "cloudflare_id", "status": "pending", "ssl": { "status": "status", "txt_name": "txt_name", "txt_value": "txt_value" }, "ownership_verification": { "type": "type", "name": "name", "value": "value" }, "verification_errors": [ "string" ], "parsed": { "subdomain": "subdomain", "root_domain": "root_domain" } }, "error_code": "error_code", "error_message": "error_message" }
json
application/json

Delete a domain

DELETE
https://api.funnelflux.pro/v1/billing
/domains/{domain}

Deletes a custom domain.

Removes the custom hostname and domain registration for the authenticated user.

Delete a domain › path Parameters

domain
​string · required

Domain hostname to delete

Delete a domain › Responses

Domain deleted successfully

DeleteDomainResponse
success
​boolean
message
​string
error_code
​string

Error code if deletion failed

error_message
​string

Human-readable error description

DELETE/domains/{domain}
curl --request DELETE \ --url https://api.funnelflux.pro/v1/billing/domains/:domain
Example Responses
{ "success": true, "message": "message", "error_code": "error_code", "error_message": "error_message" }
json
application/json

Refresh domain status

POST
https://api.funnelflux.pro/v1/billing
/domains/{domain}/refresh

Fetches fresh status for a domain from Cloudflare and runs a redirect check.

Use this when users click "Recheck" in the UI to verify their DNS setup. This endpoint:

  1. Gets current Cloudflare custom hostname status
  2. Runs HTTP redirect check to verify routing
  3. Returns combined status

Note: This does NOT call Cloudflare's refresh endpoint - it just fetches current status. Cloudflare periodically rechecks DNS automatically.

Refresh domain status › path Parameters

domain
​string · required

Domain hostname to refresh

Refresh domain status › Responses

Refreshed domain status

RefreshDomainResponse
success
​boolean
​DomainInfo
​CheckDomainResponse
POST/domains/{domain}/refresh
curl --request POST \ --url https://api.funnelflux.pro/v1/billing/domains/:domain/refresh
Example Responses
{ "success": true, "domain": { "id": "id", "domain": "domain", "owner": "owner", "created_at": "created_at", "cloudflare_id": "cloudflare_id", "status": "pending", "ssl": { "status": "status", "txt_name": "txt_name", "txt_value": "txt_value" }, "ownership_verification": { "type": "type", "name": "name", "value": "value" }, "verification_errors": [ "string" ], "parsed": { "subdomain": "subdomain", "root_domain": "root_domain" } }, "check": { "success": true, "found": true, "http_status": 0, "ssl_valid": true, "ssl_error": "ssl_error", "response_time_ms": 0, "error_message": "error_message", "check_timestamp": 0, "cloudflare_status": "cloudflare_status", "cloudflare_ssl_status": "cloudflare_ssl_status" } }
json
application/json