SDKs TypeScript

Clients officiels typés. Zéro dépendance runtime. Node 18+, Bun, Deno, edge runtimes.

@crawlers/sdk

crw_live_…

Client TypeScript pour la Crawlers API — 18 audits SEO/GEO/IA, polling auto, erreurs typées.

Installation

npm install @crawlers/sdk

Quickstart

import { CrawlersClient } from '@crawlers/sdk';

const crawlers = new CrawlersClient({
  apiKey: process.env.CRAWLERS_API_KEY!,
});

const job = await crawlers.jobs.run({
  feature: 'geo_score',
  input: { url: 'https://example.com' },
});

console.log(job.result);

// Solde wallet
const { balance_cents, estimated_jobs_remaining } = await crawlers.wallet.balance();

Gestion des erreurs

import {
  InsufficientBalanceError,
  RateLimitError,
  AuthenticationError,
} from '@crawlers/sdk';

try {
  await crawlers.jobs.run({ feature: 'audit_expert', input: { url } });
} catch (err) {
  if (err instanceof InsufficientBalanceError) {
    console.error('Recharger :', err.topupUrl);
  } else if (err instanceof RateLimitError) {
    console.error('Retry dans', err.retryAfterSec, 's');
  } else if (err instanceof AuthenticationError) {
    console.error('Clé API invalide');
  }
}

@pericles/sdk

prm_live_…

Worker pull-model pour l'Autopilote : récupère, ack, publie et reporte les tâches de contenu.

Installation

npm install @pericles/sdk

Quickstart

import { PericlesClient } from '@pericles/sdk';

const pericles = new PericlesClient({
  apiKey: process.env.PERICLES_API_KEY!,
});

// Worker prêt à l'emploi : poll → ack → handler → published/failed
await pericles.runWorker(async (task) => {
  const url = await publishToYourCms(task.payload);
  return { url, cms_post_id: 'wp_42' };
});

API bas-niveau

// API bas-niveau
const tasks = await pericles.pending(10);
await pericles.ack(tasks[0].id);

await pericles.published(tasks[0].id, {
  url: 'https://...',
  cms_post_id: '42',
});

// ou en cas d'échec
await pericles.failed(tasks[0].id, {
  error_message: 'CMS down',
  error_category: 'cms_unreachable',
});

Bonnes pratiques

  • Stocker la clé API en variable d'environnement, jamais en clair côté client.
  • jobs.run() = create + polling auto jusqu'à l'état terminal.
  • Timeout par défaut : 30 s par requête, 5 min par job. Configurables via timeoutMs / WaitOptions.
  • Pour un arrêt propre du worker Périclès : passer un AbortSignal via runWorker(handler, { signal }).