▪ Free plan: 3 websites with daily snapshots, no card required → ▪ ▪ Free plan: 3 websites, no card →

Snapshots

Snapshots are the captured results — each one contains a screenshot image, and optionally an on-the-fly PDF export and HTML source. Snapshots belong to a monitor and are created either automatically (on schedule) or manually (via the trigger endpoint). Each snapshot tracks the HTTP status code, response time, and page weight of the captured page.

List snapshots

Returns snapshots for a specific monitor, newest first. You can filter by date range and status — useful for pulling snapshots from a specific time period or finding only failed captures. The response includes signed URLs for downloading each file type.

GET/v1/monitors/{monitorId}/snapshots

Query parameters

ParameterTypeDescription
captured_afterstringOnly snapshots after this date (ISO 8601, e.g. 2026-09-01)
captured_beforestringOnly snapshots before this date
statusstringFilter: completed, failed, pending, processing
sortstringcaptured_at (default), created_at, http_status, response_time_ms, page_weight_bytes
orderstringdesc (default) or asc
per_pageintegerItems per page (default: 20)
bash
# Last week's completed snapshots
curl "https://api.snapshotarchive.com/v1/monitors/42/snapshots?status=completed&captured_after=2026-09-24" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Response

200 OK
{
  "data": [
    {
      "id": "9e8f7a6b-5c4d-3e2f-1a0b-9c8d7e6f5a4b",
      "monitor_id": 42,
      "status": "completed",
      "http_status": 200,
      "response_time_ms": 1250,
      "page_weight_bytes": 1845000,
      "files": {
        "screenshot_url": "https://storage.example.com/signed-url...",
        "pdf_url": "https://api.snapshotarchive.com/v1/snapshots/9e8f.../pdf",
        "html_url": "https://storage.example.com/signed-url..."
      },
      "captured_at": "2026-09-30T12:00:00Z",
      "created_at": "2026-09-30T12:00:00Z"
    }
  ],
  "meta": { "current_page": 1, "per_page": 20, "total": 47, "last_page": 3 }
}

Get the latest snapshot

A shortcut to retrieve the most recent completed snapshot for a monitor. Instead of listing snapshots and picking the first one, this gives you the latest result directly. Returns 404 if the monitor has no completed snapshots yet.

GET/v1/monitors/{monitorId}/latest-snapshot
bash
curl "https://api.snapshotarchive.com/v1/monitors/42/latest-snapshot" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Get a snapshot by UUID

Retrieves a single snapshot by its UUID. The response includes download URLs for the screenshot, PDF, and HTML files (if available). Use this to poll a snapshot's status after triggering a capture — check the status field until it becomes completed or failed.

GET/v1/snapshots/{uuid}
bash
curl "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-5c4d-3e2f-1a0b-9c8d7e6f5a4b" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Snapshot statuses

StatusDescription
pendingQueued, waiting for processing
processingBrowser is capturing the page
completedCapture finished, files available for download
failedCapture failed (check last_error_message on the monitor)

Delete a snapshot

Permanently removes a snapshot and all its associated files (screenshot, HTML). This cannot be undone. Returns 204 No Content on success.

DELETE/v1/snapshots/{uuid}
bash
curl -X DELETE "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-5c4d-3e2f-1a0b-9c8d7e6f5a4b" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Download screenshot, PDF, and HTML

Each completed snapshot can have up to three downloadable files: a PNG screenshot, a PDF document, and the raw HTML source. Use these endpoints to download individual files. The screenshot and PDF endpoints return the file directly; the HTML endpoint redirects to a signed storage URL.

PDF and HTML downloads require a Starter plan or above. If your plan doesn't include these features, the API returns 403.

GET /v1/snapshots/{uuid}/screenshot

Download the PNG screenshot image. If watermarking is enabled on the monitor, the watermark is applied dynamically.

GET /v1/snapshots/{uuid}/pdf

Download the PDF export. The PDF is generated on-the-fly from the screenshot with a metadata cover page including capture details and SHA-256 integrity hash. Requires Starter+.

GET /v1/snapshots/{uuid}/html

Download the raw HTML source. Redirects to a signed URL. Requires Starter+.

bash
# Download screenshot as PNG
curl -L "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../screenshot" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o screenshot.png

# Download PDF (generated on-the-fly)
curl "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../pdf" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o page.pdf

# Download HTML source
curl -L "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../html" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o source.html

Share and unshare a snapshot

Generate a public share link for a snapshot that anyone can view without authentication. This is useful for sharing screenshots with clients, embedding in reports, or posting in Slack. The share link remains active until you explicitly revoke it.

POST /v1/snapshots/{uuid}/share

Generate a shareable public link. If the snapshot already has a share token, it returns the existing one.

bash
curl -X POST "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../share" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Response

200 OK
{
  "data": {
    "share_token": "a1b2c3d4e5f6...",
    "share_url": "https://snapshotarchive.com/share/snapshot/a1b2c3d4e5f6..."
  }
}
DELETE /v1/snapshots/{uuid}/share

Revoke the share link. The URL will stop working immediately. Returns 204 No Content.

bash
curl -X DELETE "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-5c4d-3e2f-1a0b-9c8d7e6f5a4b/share" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Forward snapshot via email

Send a snapshot to one or more email addresses with all available attachments (screenshot, full-page screenshot, HTML source, PDF with metadata). Ideal for compliance archiving, SMTP journaling (e.g. Intradyn, Global Relay), or sending records to a team inbox.

POST /v1/snapshots/{uuid}/forward

Queue an email to the specified recipient(s) with the snapshot data and files as attachments.

Parameters

ParameterTypeRequiredDescription
emailstringYesRecipient email address(es), comma-separated. Max 5.
bash
curl -X POST "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../forward" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response

200 OK
{
  "data": {
    "message": "Snapshot forwarding queued.",
    "recipients": ["[email protected]"],
    "snapshot_id": "9e8f7a6b-5c4d-3e2f-1a0b-9c8d7e6f5a4b"
  }
}

Email contents

The forwarded email includes:

  • Subject: [Snapshot Archive] example.com — 2026-10-01 15:30 UTC
  • Body: URL, timestamp, HTTP status, page size, response time, SHA-256 hash of HTML source
  • Attachments: viewport screenshot, full-page screenshot, HTML source, PDF with metadata cover page

Total attachment size is limited to ~25MB. Files exceeding the limit are skipped automatically.

Auto-forwarding via monitor settings

You can also configure automatic forwarding on a per-monitor basis using the Update Monitor endpoint:

json
{
  "forward_enabled": true,
  "forward_when": "every",
  "forward_to": ["[email protected]", "[email protected]"],
  "forward_attach": ["screenshot", "full_page", "certificate", "html"]
}
FieldTypeDescription
forward_enabledbooleanEnable/disable auto-forwarding
forward_whenstringevery — every capture, changes — only significant visual changes, digest — daily summary, manual — no auto-forward
forward_toarrayRecipient email addresses (max 5). Each gets a separate email.
forward_attacharrayFiles to attach: screenshot, full_page, certificate (PDF), html

Bulk export as ZIP

Download multiple snapshots from a monitor as a single ZIP archive. You can filter by date range and choose which file types to include. The ZIP organizes files by timestamp, so each snapshot's files are in a clearly labeled folder. Requires Starter plan or above.

POST/v1/monitors/{monitorId}/export

Query parameters

ParameterTypeDescription
captured_afterstringStart date (ISO 8601)
captured_beforestringEnd date (ISO 8601)
includestringComma-separated file types: screenshot, pdf, html (default: screenshot)
limitintegerMax snapshots to include, 1–50 (default: 50)
bash
# Export last month's screenshots + PDFs
curl -X POST "https://api.snapshotarchive.com/v1/monitors/42/export" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "captured_after=2026-09-01&captured_before=2026-09-30&include=screenshot,pdf" \
  -o export.zip

The response headers include X-Export-Snapshot-Count and X-Export-File-Count so you know how many files are in the archive.

Download snapshot package

Download all available files for a single snapshot as a ZIP. The archive includes screenshot.png, document.pdf, and source.html (whichever files exist). Requires Starter plan or above.

GET/v1/snapshots/{uuid}/package
bash
curl -L "https://api.snapshotarchive.com/v1/snapshots/9e8f7a6b-.../package" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o snapshot-package.zip