1. Import (sync, up to 25)
POST /domains/import runs before the response returns.
The first request runs the import before returning. Repeating the same
normalized set of domains reuses its current non-failed job, including when submitted
through /domains/import/jobs. Domain order and letter case do not affect
this identity. A replay can return in_progress while the original request
is running; poll GET /domains/import/jobs/{id} for the final result.
After a timeout or server error, repeating the request recovers an existing
running or completed job without running the provider again. If the job is
failed, fix its reported cause and submit the same domains to start a new
attempt with a new job ID. The old job stays readable by its original ID.
Concurrent submissions share the new attempt while it is running.
An action_required job with mixed success and failure is still replayed.
Submit only its failed domains to retry those imports without repeating the
successful ones. Poll a known job ID when you only want its status; submitting
again after another terminal failure starts another attempt.
nameserver_groups to the customer when they need to update DNS at their
registrar. A successful import can still include those nameservers.
For batches of up to 500 domains, use POST /domains/import/jobs (returns
202 with in_progress). Poll or subscribe to domain_import.*.
2. Understand terminal statuses
An import may partially succeed. Read
completed_count, failed_count, and
failed.
Listen for:
domain_import.completeddomain_import.action_requireddomain_import.failed
3. Submit the order
After the required domains are imported, usePOST /orders with an existing
workspace target.
Strict Smartlead order
Idempotency-Key for this order. Use the same key only when
retrying the same request.
See How domains work and
How orders work.
Provider setup and ordering
See workspace creation and order shapes.
Webhooks
Verify signatures and handle duplicate delivery safely.