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 }).