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');
  }
}

@parmenion/sdk

prm_live_

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

Installation

npm install @parmenion/sdk

Quickstart

import { ParmenionClient } from '@parmenion/sdk';

const parmenion = new ParmenionClient({
  apiKey: process.env.PARMENION_API_KEY!,
});

// Worker prêt à l'emploi : poll → ack → handler → published/failed
await parmenion.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 parmenion.pending(10);
await parmenion.ack(tasks[0].id);

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

// ou en cas d'échec
await parmenion.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 Parménion : passer un AbortSignal via runWorker(handler, { signal }).