ArticleKit

API Documentation

Everything you need to integrate ArticleKit into your application.

View OpenAPI spec (openapi.json) →

Quick Start

Get your API key, then make a POST request to extract any article in seconds.

curl -X POST https://articlekit.vercel.app/api/v1/extract \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here" \
  -d '{"url": "https://example.com/some-article"}'

Don't have a key yet? Request a free API key →

Authentication

All requests to /api/v1/* must include your API key in the x-api-key request header.

x-api-key: sk_live_your_key_here

Keep your key secret. Do not expose it in client-side code or public repositories.

Endpoint: POST /api/v1/extract

Extracts article content from a given URL using a headless browser.

Request

FieldTypeRequiredDescription
urlstringYesThe full URL of the article to extract.

Request example

POST /api/v1/extract HTTP/1.1
Host: articlekit.vercel.app
Content-Type: application/json
x-api-key: sk_live_your_key_here

{
  "url": "https://example.com/some-article"
}

Response example

{
  "title": "Article Title",
  "author": "Jane Smith",
  "publish_date": "2024-03-15T10:00:00Z",
  "excerpt": "A brief summary of the article.",
  "content": "# Article Title\n\nFull markdown content here...",
  "site_name": "Example Publication",
  "url": "https://example.com/some-article"
}

Response Fields

FieldTypeDescription
titlestring | nullArticle headline
authorstring | nullAuthor name if found in the page
publish_datestring | nullISO 8601 publication date
excerptstring | nullShort summary or lede paragraph
contentstringFull article body as Markdown
site_namestring | nullPublisher or site name
urlstringCanonical URL of the article

Error Codes

All errors return JSON with an error field.

StatusMeaning
400Bad Request — missing or invalid url field
401Unauthorized — missing or invalid x-api-key header
403Forbidden — API key is inactive or has been revoked
429Too Many Requests — monthly rate limit exceeded
500Internal Server Error — extraction failed (page may be inaccessible)

Error response shape

{ "error": "Missing required field: url" }

Rate Limiting

Rate limits are enforced per API key on a monthly rolling basis.

PlanMonthly Limit
Free100 requests
Pro5,000 requests
Business25,000 requests

When you exceed your limit, the API returns a 429 response. Contact hello@articlekit.dev to upgrade or request a higher limit.

Code Examples

cURL

curl -X POST https://articlekit.vercel.app/api/v1/extract \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here" \
  -d '{"url": "https://example.com/article"}'

JavaScript (fetch)

const response = await fetch(
  "https://articlekit.vercel.app/api/v1/extract",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": "sk_live_your_key_here",
    },
    body: JSON.stringify({ url: "https://example.com/article" }),
  }
);

const article = await response.json();
console.log(article.title);
console.log(article.content); // Markdown

Python (requests)

import requests

response = requests.post(
    "https://articlekit.vercel.app/api/v1/extract",
    headers={
        "Content-Type": "application/json",
        "x-api-key": "sk_live_your_key_here",
    },
    json={"url": "https://example.com/article"},
)

article = response.json()
print(article["title"])
print(article["content"])  # Markdown

Ready to get started?

Request a free API key and start extracting articles in minutes.

Get Free API Key →