Skip to content

Anakin-Inc/anakin-node

Repository files navigation

@anakin-io/sdk

Node TypeScript License Status

Official Node.js / TypeScript SDK for Anakin — web scraping, crawling, search, and Wire actions.

Status: alpha (v0.1.x). Public API may change between minor versions until v1.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
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
const crawl = await client.crawl('https://example.com', { maxPages: 20 })
for (const page of crawl.pages) {
  console.log(page.url, page.markdown?.length ?? 0)
}

The SDK polls long-running jobs internally — you get the final result back from a single await. No job IDs to manage.

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, // max polling delay
  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'

Methods

Method Returns
client.scrape(url, opts) Promise<Document>
client.map(url, opts) Promise<MapResult>
client.crawl(url, opts) Promise<CrawlResult>
client.search(prompt, opts) Promise<SearchResult> (sync API)
client.agenticSearch(prompt, opts) Promise<AgenticSearchResult>
client.wire(actionId, params, opts) Promise<WireResult>
client.sessions.list(opts) Promise<BrowserSession[]>
client.sessions.create(opts) Promise<BrowserSessionHandle>
client.sessions.save(instanceId) Promise<BrowserSession>
client.sessions.update(id, { name }) Promise<BrowserSession>
client.sessions.delete(id) Promise<void>
client.countries() Country[] (static, no network call)

Development

npm install
npm run typecheck
npm run lint
npm run test
npm run build

License

Apache 2.0. See LICENSE.

About

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

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages