Node.js SDK

Official Node.js / TypeScript SDK for Anakin (anakin.io)

Official Node.js / TypeScript SDK for the Anakin API. Wraps every documented endpoint with a single async call, full TypeScript types, and built-in polling.

StatusAlpha (v0.1.x)
RuntimeNode.js 18+
Package@anakin-io/sdk on npm
Sourcegithub.com/Anakin-Inc/anakin-node
BundleESM + CJS, ~28 KB
LicenseApache 2.0

Install

npm install @anakin-io/sdk
# or
pnpm add @anakin-io/sdk
# or
yarn add @anakin-io/sdk

Quickstart

import { Anakin } from '@anakin-io/sdk'

const client = new Anakin({ apiKey: 'ak-...' })  // or set ANAKIN_API_KEY env var

// Scrape a single URL — returns the final result, no polling required
const doc = await client.scrape('https://example.com', { formats: ['markdown'] })
console.log(doc.markdown)

// Discover URLs on a site
const sitemap = await client.map('https://example.com', { limit: 200 })
console.log(sitemap.links)

// Crawl pages and get content for each
const crawl = await client.crawl('https://example.com', { maxPages: 20 })
for (const page of crawl.pages) {
  console.log(page.url, page.markdown?.length ?? 0)
}

What's in v0.1

MethodReturns
client.scrape(url, opts)Promise<Document>
client.map(url, opts)Promise<MapResult>
client.crawl(url, opts)Promise<CrawlResult>
client.search(prompt, opts)Promise<SearchResult> (synchronous API)
client.agenticSearch(prompt, opts)Promise<AgenticSearchResult>
client.wire(actionId, params, opts)Promise<WireResult> (run a Wire action)
client.sessions.list / .create / .save / .update / .deleteBrowser session CRUD
client.countries()Country[] (static, bundled with the SDK)

Configuration

const client = new Anakin({
  apiKey: 'ak-...',          // or ANAKIN_API_KEY env var
  timeoutMs: 60_000,         // per-request HTTP timeout
  maxRetries: 4,             // retries on 429 / 5xx
  pollIntervalMs: 1_000,     // initial polling delay
  pollMaxIntervalMs: 10_000, // cap on exponential backoff
  pollTimeoutMs: 300_000,    // total wait before JobTimeoutError
})

Errors

import {
  AnakinError,                // base for everything below
  AuthenticationError,        // bad/missing API key
  InsufficientCreditsError,   // 402 — exposes .balance, .required
  InvalidRequestError,        // 400
  JobFailedError,             // job came back with status="failed"
  JobTimeoutError,            // pollTimeoutMs exceeded
  RateLimitError,             // 429 — exposes .retryAfter
  ServerError,                // 5xx after retries
  NetworkError,               // DNS / connection / timeout
  WireAuthRequiredError,      // Wire action needs account connection (.connectUrl)
} from '@anakin-io/sdk'

Examples

The examples/ folder has copy-paste-able scripts:

  • quickstart.mjs — scrape, map, crawl, search, wire — five recipes
  • agentic-extraction.mjs — multi-stage AI search with a custom JSON schema

Stability

v0.1.x is alpha. The public API may change between minor versions until v1.0. Pin a specific version in production:

{
  "dependencies": {
    "@anakin-io/sdk": "0.1.0"
  }
}

Raise issues on GitHub.