sickn33/agentic-awesome-skills · error · Error
HasData not-ok: ${JSON.stringify(body.requestMetadata)}
Error message
HasData not-ok: ${JSON.stringify(body.requestMetadata)} What it means
Error "HasData not-ok: ${JSON.stringify(body.requestMetadata)}" thrown in sickn33/agentic-awesome-skills.
Source
Thrown at skills/hasdata/references/code-recipes.md:103
Cap `workers` at your plan's concurrency — anything higher just generates `429`s.
## TypeScript — minimal client
```typescript
const BASE = "https://api.hasdata.com";
const KEY = process.env.HASDATA_API_KEY!;
async function get<T = any>(path: string, params: Record<string, string | number> = {}): Promise<T> {
const qs = new URLSearchParams(Object.entries(params).map(([k, v]) => [k, String(v)]));
const r = await fetch(`${BASE}${path}?${qs}`, {
headers: { "x-api-key": KEY },
signal: AbortSignal.timeout(300_000),
});
if (!r.ok) throw new Error(`HasData ${r.status} ${await r.text()}`);
const body = await r.json() as any;
if (body?.requestMetadata?.status && body.requestMetadata.status !== "ok") {
throw new Error(`HasData not-ok: ${JSON.stringify(body.requestMetadata)}`);
}
return body as T;
}
async function post<T = any>(path: string, body: unknown): Promise<T> {
const r = await fetch(`${BASE}${path}`, {
method: "POST",
headers: { "x-api-key": KEY, "Content-Type": "application/json" },
body: JSON.stringify(body),
signal: AbortSignal.timeout(300_000),
});
if (!r.ok) throw new Error(`HasData ${r.status} ${await r.text()}`);
return r.json() as Promise<T>;
}
// Bounded concurrency, no deps
async function pool<T, R>(items: T[], n: number, fn: (x: T) => Promise<R>) {
const out: R[] = []; let i = 0;View on GitHub (pinned to 58d857988f)
When it happens
Trigger: Thrown at skills/hasdata/references/code-recipes.md:103 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sickn33/agentic-awesome-skills@58d857988f (2026-08-26).
Data as JSON: /api/errors/1d9a3f1a8789ba53.
Report an issue: GitHub.