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