Retry a failed domain registration
POST /api/v2/domains/{id}/actions/retry-registration
Try a failed domain registration again. Check actions.canRetryRegistration in registrationStatus on GET /api/v2/domains/{id}/lifecycle first. Send an empty body first. Some domain endings need extra details. The call then returns 422 registration_recovery_required with the form in recovery.fields and a body to complete in recovery.suggestedBody. Fill in the empty values and send that body back. When a missing detail belongs to your account details, update them first and send profileUpdated: true. The registration order’s invoice must be paid first, otherwise the call returns 402 payment_required. When the registry refuses the retry, the call returns 409 with the reason in code and registration.terminal. When terminal is true, another retry will not help. A 200 means the registration was sent again or the domain is already active. When operation is present, follow the job (Jobs) before you read the domain again.
Authentication: An API key with the scope write:domains. About keys and scopes
Request
Path parameters
idstringrequireddom_…).Body (optional)
recoveryValuesobjectrecovery.fields[].key. Each value is a string of at most 500 characters.profileUpdatedbooleanExample
curl -X POST "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/retry-registration" \ -H "Authorization: Bearer $HOSTUP_API_KEY" \ -H "Content-Type: application/json"curl -X POST "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/retry-registration" \ -H "Authorization: Bearer $HOSTUP_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "recoveryValues": { "musicNexusConnectionToMusic": "ENT", "musicNexusRegistryPoliciesAttestation": "YES" } }'curl -X POST "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/retry-registration" \ -H "Authorization: Bearer $HOSTUP_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "profileUpdated": true }'Responses
200 The registration was sent again or the domain is already active.
{ "domainId": "dom_01hxa3b4c5d6e7f8g9h0j1k2m3", "registrationStatus": "submitted", "reason": "Domain registered. Account status sync is still in progress.", "operation": { "status": "in_progress", "jobId": "dbj_01hxa3b4c5d6e7f8g9h0j1k2m3", "pollUrl": "/api/jobs/dbj_01hxa3b4c5d6e7f8g9h0j1k2m3" }}Response fields
domainIdstringregistrationStatusstringqueued, submitted, completed.reasonstring or nulloutcomeobjectoperationobjectpollUrl or GET /api/jobs/{jobId} until it is completed or failed.statusstringin_progress.jobIdstringdbj_.pollUrlstringErrors
Errors are Problem Details with a stable code. Branch on the code, not on the text.
| 400 | Invalid request. The response body is an RFC 7807 Problem Details document. |
| 401 | Unauthorized. Authentication is required. |
| 403 | Forbidden. The caller lacks a required scope or does not own the resource. |
| 404 | Not found. The resource does not exist or is not owned by the caller; code is domain_not_found. |
| 409 | The retry did not go through. registration_not_retryable, no_failed_registration, order_missing or registration_invoice_not_payable: the domain is not waiting for a registration retry. registration_retry_in_progress: another retry is running. domain_not_available, registrant_data_missing, invalid_auth, registry_rejected, provider_temporary, auto_retry_scheduled or unknown: the registry did not accept the retry. registration.terminal says whether another retry can help. |
| 422 | The registration needs more details (registration_recovery_required). Send recovery.suggestedBody back with the empty values filled in. |
| 429 | Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers. |
| 500 | Internal error. Retry later or contact support if the issue persists. |
| 502 | Upstream failure. A dependent provider request failed; the Problem Details code is upstream_failed. Retry later or contact support if the issue persists. |