← Back to beta shell

Public beta docs

API Quickstart

Use POST /v1/scrape to turn a public webpage into clean, model-ready context for AI apps, agents, RAG pipelines, and automation workflows.

1. Endpoint

POST /v1/scrape

Required headers:

Authorization: Bearer DEMO_API_KEY
Content-Type: application/json

2. Request body

{
  "url": "https://example.com",
  "ai": "auto"
}
FieldRequiredDescription
urlYesA full public https:// webpage URL.
aiNoOne of auto, off, clean, or extract. Defaults to auto.

3. AI modes

ModePublic behavior
autoDefault mode. Returns AI-ready cleaned content when possible.
offReturns extracted webpage text without AI cleanup.
cleanApplies stronger cleanup for better downstream LLM readability.
extractCompatibility mode. Currently equivalent to auto for public beta usage.

4. Copy-paste examples

curl

BASE_URL="https://sou.esim111.net"
API_KEY="YOUR_API_KEY"

curl -sS -X POST "$BASE_URL/v1/scrape" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","ai":"auto"}'

Python

import json
import urllib.request

BASE_URL = "https://sou.esim111.net"
API_KEY = "YOUR_API_KEY"
payload = {"url": "https://example.com", "ai": "auto"}

request = urllib.request.Request(
    f"{BASE_URL}/v1/scrape",
    data=json.dumps(payload).encode("utf-8"),
    method="POST",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
)

with urllib.request.urlopen(request, timeout=30) as response:
    body = json.loads(response.read().decode("utf-8"))
    print("success:", body.get("success"))
    print("request_id:", body.get("request_id"))
    print("summary:", body.get("content", {}).get("summary"))

Node.js

const BASE_URL = 'https://sou.esim111.net';
const API_KEY = 'YOUR_API_KEY';

async function main() {
  const response = await fetch(`${BASE_URL}/v1/scrape`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      url: 'https://example.com',
      ai: 'auto',
    }),
  });

  const data = await response.json();
  console.log('status:', response.status);
  console.log('success:', data.success);
  console.log('request_id:', data.request_id);
  console.log('summary:', data.content?.summary);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

5. Response anchors

During beta, integrations should rely first on these stable anchors:

6. Error codes

CodeRetry?Meaning
INVALID_URLNoThe URL is malformed or not a supported public https:// URL.
TARGET_UNSUPPORTEDNoThe target page type is outside public beta support scope.
PROCESSING_CAPACITY_LIMITEDYesProcessing is busy. Retry shortly with exponential backoff.

For retryable errors, wait 1 second, then 2 seconds, then 4 seconds. Stop after 3 retries and include request_id in support requests.

Good beta targets

  • Public documentation
  • Blog posts and news articles
  • Help center pages
  • Public company and product pages
  • Public hiring pages on a best-effort basis

Not supported as a beta promise

  • Login pages and account dashboards
  • Payment, checkout, cart, or order pages
  • CAPTCHA or verification challenge pages
  • Private, restricted, or session-only content

Keep API keys on your server side. Never paste keys into screenshots, logs, or public support channels.