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/sdkQuickstart
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/sdkQuickstart
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
AbortSignalviarunWorker(handler, { signal }).