Developer API

Access the complete 1990–1999 web archive programmatically. RESTful endpoints, JSON responses, and official SDKs for all major languages.

Base URL: https://api.1990archive.net/v1

Authentication

API Keys

All requests must include your API key in the Authorization header. Keys can be generated from your dashboard.

# Example Request Header Authorization: Bearer ak_live_8f3a9c2d1e4b5f6g7h8i9j0k

Keys are scoped to environments (sandbox vs production). Never expose production keys in client-side code.

Core Endpoints

GET /archive/{url}

Retrieve a fully reconstructed snapshot of an archived webpage. Returns HTML, assets manifest, and metadata.

Parameters

ParameterTypeRequiredDescription
urlstringYesURL-encoded target address
timestampISO8601NoSpecific snapshot date. Defaults to latest.
formatenumNohtml, json, or render

Response Example

{ "status": "success", "data": { "url": "https://www.geocities.com/~/heartland/sunset/4821", "timestamp": "1998-06-12T14:22:00Z", "content": "<html>\n<body bgcolor=\"#000000\" text=\"#00FF00\">...", "assets": [ { "type": "image/gif", "url": "https://cdn.1990archive.net/assets/a1b2c3.gif" }, { "type": "audio/midi", "url": "https://cdn.1990archive.net/assets/x9y8z7.mid" } ] }, "meta": { "cache": "HIT", "request_id": "req_7f3d9a" } }
GET /search

Query the archive index across 4.2M+ pages. Supports era filtering, content matching, and asset type queries.

Parameters

ParameterTypeRequiredDescription
qstringYesSearch query (title, body, or URL match)
erastringNoYear or range: 1995, 1998-1999
has_assetenumNogif, midi, frameset, webring
limitintNoMax results (default: 20, max: 100)
POST /crawl/request

Submit a URL for asynchronous crawling and archival. Returns a job ID for status tracking.

Request Body

{ "url": "https://legacy.example.com", "depth": 2, "preserve_midi": true, "callback": "https://your-app.com/webhooks/crawl" }

Rate Limits & Tiers

PlanRequests / minBandwidth / moMax Crawl DepthPriority
Free605 GB1Standard
Pro600100 GB3High
EnterpriseUnlimitedUnlimitedCustomDedicated

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Exceeding limits returns 429 Too Many Requests.

Official SDKs

Maintained packages for rapid integration. All support async/await and automatic pagination.

Node.js

TypeScript & CommonJS

npm i 1990-archive-sdk

Python

Asyncio & Type hints

pip install archive90

Go

Standard library only

go get archive.net/sdk

Rust

Tokio & Serde

cargo add archive90

Error Handling

API errors follow standard HTTP semantics. The response body always contains a structured error object:

{ "error": { "code": "RESOURCE_NOT_FOUND", "message": "No snapshots found for the provided URL in the requested era.", "request_id": "req_4a8b2c", "docs": "https://docs.1990archive.net/errors/RESOURCE_NOT_FOUND" } }
"}