hosting

POST /v1/site-imports

Restore a site from a web archive, or migrate one in.

Tous les points de terminaison hosting

Authentification

Envoyez une clé API en tant que jeton du porteur. La clé doit posséder l'autorisation hosting.import.manage ; une clé qui ne l'a pas est refusée avec le code 403, et non 404.

Cet endpoint ne prend aucun identifiant d'organisation. Votre clé identifie déjà l'organisation à laquelle elle appartient, et la réponse y est limitée.

Essayer

Remplacez tout ce qui se trouve entre crochets par vos propres valeurs, et le espace réservé à la clé par une clé de votre tableau de bord.

curl -X POST https://api.zinndigital.com/v1/site-imports \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "source": <SiteImportSource>, "output": <SiteImportOutput>, "source_domain": <string> }'

Connecté ? La console d'API de votre tableau de bord saisit votre véritable ID d'organisation ainsi que votre propre clé, et exécute la requête sur l'API de production afin que vous puissiez voir la réponse réelle. Ouvrir ce point de terminaison dans la console API

Détails

Starts a durable, resumable import workflow and returns the new job state, never a bare acknowledgement. A Wayback restore **must** name `snapshot_day`: the most recent capture of an expired domain is usually a parking page, so there is no safe default (422 without it). The output is either a static HTML document root or a WordPress import — both are supported and neither is a default. A site with an import already running returns 409. ⚠️ `ownership_attested` is recorded, not enforced: the platform's obligation here is to know who requested what. Requires `hosting.import.manage`.

Paramètres

NomTypeObligatoireQu'est-ce que c'est
Idempotency-Key (header)stringNonClient-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats.

Corps de la requête

NomTypeObligatoireQu'est-ce que c'est
sourceSiteImportSourceOuiWhere the content comes from. ⛔ Deliberately not the same enum as a site's `source`: that one records what a site was built from, for ever, while this selects a fetch strategy a…
outputSiteImportOutputOuiWhat the import produces. Both are supported; neither is a default.
source_domainstringOuiThe domain whose archive to restore, or — for `archive_url` — the URL of the archive to migrate in.
target_domainstringNonThe domain the result is served on. Defaults to `source_domain`.
site_idUuidNonRestore into an existing site. Omit to produce a bundle and choose the target later.
snapshot_daystringNonWhich day's snapshot to restore. **Required for `wayback`** — the most recent capture of an expired domain is usually a parking page, so there is no safe default.
crawl_depthintegerNon
request_budgetintegerNonThe hard ceiling on requests this job may make against the source. Bounded per job so one 400,000-capture domain cannot consume the platform's whole archive allowance.
ownership_attestedbooleanNon⚠️ The customer's assertion that they control the domain, recorded because it cannot be reconstructed afterwards. It is **not** a legal control and is not presented as one.

Réponse

NomTypeObligatoireQu'est-ce que c'est
idUuidOuiUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idstringNonThe site this import lands on, or empty. Empty is a real outcome, not an error: an aged-domain restore produces a downloadable bundle and the customer picks the target afterwards.
sourceSiteImportSourceOuiWhere the content comes from. ⛔ Deliberately not the same enum as a site's `source`: that one records what a site was built from, for ever, while this selects a fetch strategy a…
outputSiteImportOutputOuiWhat the import produces. Both are supported; neither is a default.
statusSiteImportStatusOui`fetching` and `building` are separate states rather than one `running` because they fail for opposite reasons and the customer's next action differs — a stall in `fetching` is…
status_reasonstringNonA machine code the dashboard renders through its own catalogue — never an English sentence composed by the engine, which could not be shown to the other 57 locales.
source_domainstringOui
target_domainstringNon
snapshot_daystringNon
crawl_depthintegerNon
urls_totalintegerOui
urls_doneintegerOui
urls_failedintegerOui
progress_percentintegerOuiFor a progress bar only. The per-URL counters are the primary display, because a percentage cannot say *which* step.
requests_spentintegerOui
request_budgetintegerOui
budget_exhaustedbooleanOuiTrue when the job stopped because it ran out of requests. Surfaced deliberately — it otherwise looks identical to a job that finished, and the customer's next action depends on…
bundle_bytesintegerNon
created_atstringOui
started_atstringNon
finished_atstringNon
can_cancelbooleanOui

Erreurs que cet point de terminaison peut renvoyer

401 · 403 · 404 · 409 · 422 · 429 · 503