Log inTalk to us

Prepare a tenant return domain and its two DNS records

post/v1/tenants/{tenant_id}/return-domains
Requires an API key

Idempotent by tenant and normalized hostname. Recreating a disabled hostname rotates its ownership challenge. Does not modify DNS or activate TLS. A hostname serves one purpose: OCPP, payment, QR or return. A return domain is your own app's hostname, where API payments' return_url may send the driver after hosted checkout. It needs only the TXT record at _ivora-return.<hostname>; Ivora never serves, proxies, routes or issues a certificate for it, so point its address wherever your app is hosted.

Path parameters

  • tenant_idintegerRequired

Request body

  • hostnamestringRequired
    3–221 characters

Returns · 201

  • idstringRequired
  • tenant_idintegerRequired
  • hostnamestringRequired
  • statusenumRequired
    pending_dns until the TXT record checks out; dns_verified while it does (never active: Ivora serves nothing on a return domain); disabled by the tenant.
    One of pending_dns, dns_verified, disabled
  • created_atstringRequired
  • checked_atstring | nullRequired
  • verified_atstring | nullRequired
  • activated_atstring | nullRequired
  • certificate_expires_atstring | nullRequired
  • activation_errorstring | nullRequired
  • dns_recordsarray of DNSRecordRequired
    Child attributes
    • typeenumRequired
      One of A, CNAME, TXT
    • namestringRequired
    • valuestringRequired
    • ttlintegerRequired
    • proxiedboolean | null
  • checksobject | nullRequired
  • readybooleanRequired
    dns_verified and the TXT record rechecked within the last hour: return_url may use this hostname.
  • purposestring
    Default "return"
  • return_url_prefixstringRequired
    Every return_url of an API payment on this hostname starts with this prefix.
POST /v1/tenants/{tenant_id}/return-domains
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/return-domains" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "hostname": "ocpp.example.com"
}'
Response · 201JSON
{
  "id": "id_0123456789abcdef",
  "tenant_id": 1042,
  "hostname": "ocpp.example.com",
  "status": "pending_dns",
  "created_at": "2026-09-30T17:00:00Z",
  "checked_at": "2026-09-30T17:00:00Z",
  "verified_at": "2026-09-30T17:00:00Z",
  "activated_at": "2026-09-30T17:00:00Z",
  "certificate_expires_at": "2026-09-30T17:00:00Z",
  "activation_error": "string",
  "dns_records": [
    {
      "type": "A",
      "name": "bay-01",
      "value": "string",
      "ttl": 1,
      "proxied": false
    }
  ],
  "checks": {},
  "ready": false,
  "purpose": "return",
  "return_url_prefix": "https://charge.example.com/"
}
Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
Try itproduction · api.ivoracharge.com

Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.

POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.