Emulation API Reference

Programmatically spin up historically accurate browser environments, render archived URLs exactly as they appeared in the 1990s, capture snapshots, and extract console/network logs for research or development.

npm install @1990archive/emulation-sdk

Authentication

Security

All API requests require authentication via a Bearer token or your project API key. Tokens can be generated in the developer dashboard.

# Header Format
Authorization: Bearer <YOUR_API_KEY>
X-Archive-Key: pk_live_xxxxxxxxxxxx

Base URL & Environments

Configuration
EnvironmentBase URLUse Case
Productionhttps://api.1990archive.com/v2Live emulation & production workloads
Sandboxhttps://api-sandbox.1990archive.com/v2Testing & development (no rate limits)

Create Emulation Session

Core
POST /v2/emulation/sessions Provision a vintage browser instance

Allocates a secure, isolated container with a period-accurate browser and OS environment. Sessions persist for 24 hours by default.

Body Parameters

ParameterTypeDescription
browser_version *stringnetscape_3.0, ie4.0, mosaic_3.0, opera_3.0
os_targetstringwindows_95, mac_os_8, linux_2.0 (default: windows_95)
network_profilestring56k_dialup, isdn_64k, t1, unmetered
screen_resolutionobject{ width: 800, height: 600 } (default era-standard)
curl -X POST https://api.1990archive.com/v2/emulation/sessions \\
  -H "Authorization: Bearer <KEY>" \\
  -H "Content-Type: application/json" \\
  -d '{"browser_version": "netscape_3.0", "network_profile": "56k_dialup"}'

Render Archived Page

Core
POST /v2/emulation/{session_id}/render Load & execute a historical URL

Triggers the emulation instance to navigate to a specific archived snapshot or live mirror. Supports relative resource loading from our 1990-1999 archive.

curl -X POST https://api.1990archive.com/v2/emulation/ses_8f3a2c1d/render \\
  -H "Authorization: Bearer <KEY>" \\
  -d '{"url": "archive://geoocities.com/~coder95", "timestamp": "1998-04-15T10:30:00Z"}'

Capture Screenshot

Media
POST /v2/emulation/{session_id}/screenshot Generate period-accurate viewport capture

Returns a base64-encoded PNG or direct download URL. Supports full-page or viewport-only modes. Automatically applies era-appropriate rendering quirks (anti-aliasing off, dithering enabled, etc.).

{
"format": "png",
"viewport": true,
"quality": 100,
"include_scrollbar": false
}

Retrieve Console & Network Logs

Debugging
GET /v2/emulation/{session_id}/logs Extract browser console & traffic

Returns an array of structured log objects. Filters support type=console, type=network, or type=errors. Useful for debugging legacy JS (Netscape 2/3 quirks) or tracking broken resource paths.

{
"logs": [
{
"timestamp": "1998-04-15T10:30:05Z",
"type": "console",
"level": "warn",
"message": "Variable 'document.layers' deprecated in later specs"
}
],
"count": 1
}

Terminate Session

Lifecycle
DELETE /v2/emulation/{session_id} Release resources & wipe state

Gracefully shuts down the emulation container, clears temporary disk allocations, and returns remaining compute credits. Returns 204 No Content on success.

204 Session terminated
404 Session not found
401 Invalid API key

Webhooks & Events

Async

Configure webhook endpoints in your dashboard to receive real-time event notifications. All payloads are signed with your project's signing_secret.

EventTriggerPayload Key
session.createdContainer provisionedsession_id, browser
render.completeDOM fully loadedjob_id, status, metrics
screenshot.readyCapture generatedurl, expires_at
session.terminatedManual or auto-closesession_id, reason

Rate Limits & Tiers

Billing
PlanConcurrent SessionsRequests / minStorage Retention
Free13024h
Research105007d
EnterpriseUnlimited5,00090d + S3 export