/docs/api-reference

API Reference

Interact with the 1990 Web Archive programmatically. Access millions of preserved pages, submit new URLs for archival, and query historical web data through our RESTful API.

Overview

The 1990 Web Archive API provides a consistent, versioned interface to our preservation database. All requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

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

Current version: v1.4.2. We follow semantic versioning and will never break backward compatibility within a major version.

Authentication

The API uses Bearer token authentication. You can generate API keys from your dashboard. Include your token in the Authorization header.

cURL
curl -X GET https://api.1990webarchive.com/v1/pages \n  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
const response = await fetch('https://api.1990webarchive.com/v1/pages', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});

⚠️ Never expose your API keys in client-side code or public repositories. Use environment variables or a backend proxy.

Rate Limits

To ensure fair usage, the API enforces rate limits based on your subscription tier.

HeaderDescription
X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when the window resets

Exceeding limits returns 429 Too Many Requests. Implement exponential backoff for retries.

Endpoints

GET /v1/pages

Retrieve a paginated list of archived web pages. Supports filtering by era, domain, and status.

Query Parameters

NameTypeDescription
pageintegerPage number (default: 1)
per_pageintegerResults per page (max: 100)
erastringFilter by decade: 1990s, 2000s
statusstringpreserved, partial, failed
Response 200
{
  "data": [
    {
      "id": "pg_8a9b2c3d4e",
      "url": "http://www.geocities.com/SunsetStrip/9842",
      "archived_at": "1998-11-14T08:22:00Z",
      "status": "preserved",
      "mime_type": "text/html",
      "size_bytes": 14200
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 4218902
  }
}
GET /v1/pages/:id

Fetch complete metadata and raw HTML content for a specific archived page.

Response 200
{
  "id": "pg_8a9b2c3d4e",
  "url": "http://www.geocities.com/SunsetStrip/9842",
  "original_content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n<html>\n<head>\n  <title>Welcome to My Page</title>\n</head>\n<body bgcolor=\"#000080\" text=\"#00FF00\">\n  <h1>You made it!</h1>\n</body>\n</html>",
  "metadata": {
    "archived_at": "1998-11-14T08:22:00Z",
    "server": "Netscape-Enterprise/2.01",
    "encoding": "iso-8859-1"
  }
}
POST /v1/archive

Submit a URL for immediate archival. The request is asynchronous; poll the returned job_id for status.

Request Body

NameTypeRequiredDescription
urlstringRequiredFull HTTP/HTTPS URL to archive
wait_renderbooleanWait for JS execution before snapshot
tagsstring[]Custom metadata tags
cURL
curl -X POST https://api.1990webarchive.com/v1/archive \n  -H "Authorization: Bearer YOUR_API_KEY" \n  -H "Content-Type: application/json" \n  -d '{"url": "https://example.com", "tags": ["research", "1998"]}'

Pagination

Lists support offset-based pagination. All list endpoints return a pagination object.

{
  "page": 2,
  "per_page": 50,
  "total": 12500,
  "has_next": true,
  "has_prev": true
}

Error Handling

The API uses conventional HTTP status codes and returns JSON error details.

CodeMeaningDetails
400Bad RequestInvalid parameters or malformed JSON
401UnauthorizedMissing or invalid API key
403ForbiddenInsufficient permissions for this resource
404Not FoundResource does not exist or was purged
429Rate LimitedToo many requests. Check rate limit headers
500Server ErrorInternal archive failure. Retry with backoff
Error Response Format
{
  "error": {
    "code": "invalid_parameter",
    "message": "URL must include a valid http or https scheme",
    "details": {"field": "url"}
  }
}

SDKs & Tools

Official libraries for rapid integration:

  • 🐍 pip install 1990-archive-python
  • 📦 npm install @1990archive/node-sdk
  • 🐙 go get github.com/1990archive/go-archive

Community tools and Postman collections are available on our GitHub organization.

"}