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
SecurityAll 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| Environment | Base URL | Use Case |
|---|---|---|
| Production | https://api.1990archive.com/v2 | Live emulation & production workloads |
| Sandbox | https://api-sandbox.1990archive.com/v2 | Testing & development (no rate limits) |
Create Emulation Session
CoreAllocates a secure, isolated container with a period-accurate browser and OS environment. Sessions persist for 24 hours by default.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| browser_version * | string | netscape_3.0, ie4.0, mosaic_3.0, opera_3.0 |
| os_target | string | windows_95, mac_os_8, linux_2.0 (default: windows_95) |
| network_profile | string | 56k_dialup, isdn_64k, t1, unmetered |
| screen_resolution | object | { 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
CoreTriggers 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
MediaReturns 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
DebuggingReturns 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
LifecycleGracefully shuts down the emulation container, clears temporary disk allocations, and returns remaining compute credits. Returns 204 No Content on success.
Webhooks & Events
AsyncConfigure webhook endpoints in your dashboard to receive real-time event notifications. All payloads are signed with your project's signing_secret.
| Event | Trigger | Payload Key |
|---|---|---|
session.created | Container provisioned | session_id, browser |
render.complete | DOM fully loaded | job_id, status, metrics |
screenshot.ready | Capture generated | url, expires_at |
session.terminated | Manual or auto-close | session_id, reason |
Rate Limits & Tiers
Billing| Plan | Concurrent Sessions | Requests / min | Storage Retention |
|---|---|---|---|
| Free | 1 | 30 | 24h |
| Research | 10 | 500 | 7d |
| Enterprise | Unlimited | 5,000 | 90d + S3 export |