The haatlabs API

The work that needs servers of its own (Amazon lookups in 23 marketplaces, image search, background removal, AI descriptions and image checks, and jobs that chain them) runs on Haatlabs' servers and is sold through RapidAPI. Your app calls it with one key. What each call does: the API page.

On RapidAPI: coming soon.

Plans

Per month, through RapidAPI. Basic stops at its quota; the paid plans go on and pay for each extra call.

PlanPriceLookupsCut-outsAI callsPipelines
BasicFree100505010
Pro$195,0001,0002,000200
Ultra$7925,0005,00010,0001,000
Mega$249100,00020,00040,0005,000

Each extra call: lookup $0.004, cut-out $0.02, AI call $0.01, pipeline $0.10. Fair use and the Amazon data: the terms.

From your app

pnpm add @haatlabs-core/services
import { createHaatlabsApi } from '@haatlabs-core/services';

const api = createHaatlabsApi({ apiKey: process.env.HAATLABS_API_KEY! });
const page = await api.amazon.search({ q: 'desk lamp', market: 'US' });
const cutout = await api.images.removeBackground({ image: bytes }); // or { imageUrl }
const job = await api.jobs.start('find-clean', { query: 'desk lamp', limit: 5 });
const done = await api.jobs.wait(job.jobId);

An image goes as its bytes (at most 5 MB) or as a public https URL. Results are signed URLs, readable for 7 days. Every failure is an AppError with its own code (SERVICE_QUOTA_EXCEEDED, SERVICE_RATE_LIMITED, SERVICE_UNAVAILABLE and the others in the package's page), and verifyWebhook checks a job's callback. @haatlabs-core/services/testing has a local stand-in for tests.