API Documentation

Programmatically access, capture, and render the preserved history of the early web.

The 1990 Web Archive API provides RESTful endpoints for querying our archive, submitting new URLs for preservation, and retrieving historically accurate renderings of archived pages. All responses are JSON-formatted, and requests require authentication via API key.

Base URL: https://api.1990webarchive.com/v1

Authentication

All API requests require a valid API key passed in the Authorization header using the Bearer scheme. You can generate and manage your keys in the developer dashboard.

Header
Authorization: Bearer YOUR_API_KEY

Invalid or missing keys will return a 401 Unauthorized response. Keys are scoped to specific access levels (read-only, capture, full).

API Endpoints

POST /capture

Submit a live or historical URL for archival capture. The system will crawl, fingerprint, and store the resource with full metadata.

Request Body

ParameterTypeDescription
url requiredstringValid HTTP/HTTPS URL to archive
prioritystringProcessing priority (normal, high, critical)
tagsarrayCustom metadata tags for organization
GET /capture/{id}/status

Check the processing status of a submitted capture request. Returns current state, estimated completion time, and preliminary metadata.

GET /render/{id}

Retrieve the archived resource. Supports returning raw HTML, reconstructed DOM, or timestamped screenshot captures. Use query parameter format=html|json|png.

Code Examples

Quick integration examples for common workflows.

bash
curl -X GET https://api.1990webarchive.com/v1/search?q=geocities \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
python
import requests

headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"q": "web ring 1998", "era": "1990s"}

response = requests.get(
  "https://api.1990webarchive.com/v1/search",
  headers=headers, params=params
)
print(response.json())
javascript
const fetch = require("node-fetch");

const response = await fetch("https://api.1990webarchive.com/v1/search?q=netscape", {
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Accept": "application/json"
  }
});

console.log(await response.json());

Error Codes & Status

The API uses standard HTTP status codes to indicate success or failure of requests.

200OK - Request succeeded
201Created - Capture queued
400Bad Request - Invalid parameters
401Unauthorized - Invalid API key
403Forbidden - Insufficient permissions
404Not Found - Resource missing
429Too Many Requests - Rate limited
500Server Error - Internal failure

Rate Limits

To ensure fair usage and archive stability, API requests are rate-limited based on your plan tier. Limits are calculated as a rolling window over 60 seconds.

  • Free Tier: 100 requests / minute (Read-only)
  • Pro Tier: 1,000 requests / minute (Full access)
  • Enterprise: Custom limits with dedicated infrastructure

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

SDKs & Libraries

Official client libraries are available for popular development environments. They handle authentication, retries, pagination, and response parsing automatically.

🐍 Python SDK 🟢 Node.js SDK 🔷 Go SDK 🦀 Rust SDK

Unofficial community libraries are also available. See our GitHub organization for integration examples and developer tools.