hosting
POST /v1/site-imports
Restore a site from a web archive, or migrate one in.
Πισtoποίηση
Στείλτε ένα κλειδί API ως διακριτικό φορέα (bearer token). Το κλειδί πρέπει να διαθέτει το δικαίωμα hosting.import.manage· ένα κλειδί που δεν το διαθέτει απορρίπτεται με 403, όχι 404.
Πού μπαίνει το αναγνωριστικό του οργανισμού σας
Αυτό το endpoint δέχεται το πεδίο org_id στο σώμα JSON.
Το αναγνωριστικό του οργανισμού σας βρίσκεται στην οθόνη των κλειδιών API στον πίνακα ελέγχου σας, δίπλα στο ίδιο το κλειδί. Είναι το ίδιο αναγνωριστικό σε κάθε κλήση που πραγματοποιείτε.
Δοκιμάστε το
Ατικatastήstε ό,τι βρίskεtai μέσα σe γώniaδeς μe τis δikές sas timές, kai to placeholder klεidioύ μe éna klεidi apó ton pinaka ελέgchou sas.
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> }'Συνδεθήκατε; Η κονσόλα API στον πίνακα ελέγχου σας συμπληρώνει το πραγματικό αναγνωριστικό του οργανισμού σας και το δικό σας κλειδί, και εκτελεί το αίτημα στο ζωντανό API, ώστε να μπορείτε να δείτε την πραγματική απόκριση. Ανοίξτε αυτό το τελικό σημείο στην κονσόλα API
Λεπτομέρειες
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.
Παράμετροι
| Όνομα | Τύpος | Υποχρεωτικό | Τι είναι |
|---|---|---|---|
Idempotency-Key (header) | string | Όχι | Client-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats. |
Σώμα αίτησης
| Όνομα | Τύpος | Υποχρεωτικό | Τι είναι |
|---|---|---|---|
org_id | Uuid | Όχι | Which organisation this import belongs to. Only needed by an account that acts for more than one and is not naming a site_id — when a site is named, the site decides,… |
source | SiteImportSource | Ναι | Where 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 and… |
output | SiteImportOutput | Ναι | What the import produces. Both are supported; neither is a default. |
source_domain | string | Ναι | The domain whose archive to restore, or — for archive_url — the URL of the archive to migrate in. |
target_domain | string | Όχι | The domain the result is served on. Defaults to source_domain. |
site_id | Uuid | Όχι | Restore into an existing site. Omit to produce a bundle and choose the target later. |
snapshot_day | string | Όχι | Which 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_depth | integer | Όχι | — |
request_budget | integer | Όχι | The 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_attested | boolean | Όχι | ⚠️ 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. |
Απάντηση
| Όνομα | Τύpος | Υποχρεωτικό | Τι είναι |
|---|---|---|---|
id | Uuid | Ναι | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
site_id | string | Όχι | The 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. |
source | SiteImportSource | Ναι | Where 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 and… |
output | SiteImportOutput | Ναι | What the import produces. Both are supported; neither is a default. |
status | SiteImportStatus | Ναι | 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_reason | string | Όχι | A 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_domain | string | Ναι | — |
target_domain | string | Όχι | — |
snapshot_day | string | Όχι | — |
crawl_depth | integer | Όχι | — |
urls_total | integer | Ναι | — |
urls_done | integer | Ναι | — |
urls_failed | integer | Ναι | — |
detected_platform | string | Όχι | What the archived site was built on, once the crawl has seen a page — the same codes as ArchivePlatform.platform. ⛔ Empty means not established, never plain HTML; the two… |
pre_restore_backup_id | string | Όχι | The safety backup taken of the target site immediately before this restore overwrote it. ⚖️ Owner ruling 2026-09-08: a restore onto a site that already has content is gated behind… |
progress_percent | integer | Ναι | For a progress bar only. The per-URL counters are the primary display, because a percentage cannot say which step. |
requests_spent | integer | Ναι | — |
request_budget | integer | Ναι | — |
budget_exhausted | boolean | Ναι | True 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_bytes | integer | Όχι | — |
created_at | string | Ναι | — |
started_at | string | Όχι | — |
finished_at | string | Όχι | — |
can_cancel | boolean | Ναι | — |
Σφάλματα που μπορεί να επιστρέψει αυτό το τελικό σημείο
401 · 403 · 404 · 409 · 422 · 429 · 503