@counteraudit/sdk
v0.1.1
Published
HTTP client for CounterAudit audit ingest API (Node 18+)
Maintainers
Readme
@counteraudit/sdk
HTTP client for the CounterAudit API. Requires Node.js 18+ (global fetch).
Install
From the monorepo (local path):
npm install ../packages/counteraudit-sdk
# or after npm pack:
npm install ./counteraudit-sdk-0.1.0.tgzWhen published to npm:
npm install @counteraudit/sdkUsage
const { CounterAuditClient, CounterAuditError } = require('@counteraudit/sdk');
async function main() {
const ca = new CounterAuditClient({
baseUrl: 'https://api.counteraudit.io',
apiKey: process.env.COUNTERAUDIT_API_KEY,
timeoutMs: 30000 // optional (default 30s)
});
console.log(await ca.health());
const ing = await ca.ingest({
connector_id: 'langchain-v0.3',
org_id: '00000000-0000-4000-8000-000000000001',
raw_event: { run_id: 'run-1', model_id: 'gpt-4o', input: 'hello' }
});
console.log(ing.entry_hash);
const debt = await ca.dashboardDebt({ days: 30 });
console.log(debt.agentic_debt_index);
const page = await ca.listPackets({ limit: 20 });
console.log(page.packets.length, page.next_cursor);
// Proof-first wrappers (v1 naming)
const record = await ca.proof.record({
connector_id: 'langchain-v0.3',
raw_event: { run_id: 'run-2', model_id: 'gpt-4o', input: 'hello again' }
});
const verify = await ca.proof.verify({ packetId: record.packet_id });
const chain = await ca.proof.chainVerify({ orgId: '00000000-0000-4000-8000-000000000001' });
const exported = await ca.proof.export({ limit: 10 });
console.log(verify.valid, chain.valid, exported.count);
}
main().catch((e) => {
if (e instanceof CounterAuditError) {
console.error(e.status, e.code, e.requestId, e.body);
}
throw e;
});TypeScript support
The package ships d.ts declarations.
import { CounterAuditClient, CounterAuditError } from '@counteraudit/sdk';Reliability behavior
- request timeout is configurable (
timeoutMs, default 30s) - transient request failures raise
CounterAuditErrorwith:statuscode(APIerrorvalue when present)requestId(x-request-idwhen present)body(full parsed response payload)
- argument guards enforce required IDs and query ranges (
limit,days)
API surface
| Method | Maps to |
| -------- | --------- |
| health() | GET /health |
| ingest(body) | POST /v1/audit/ingest |
| verify(packetId) | GET /v1/audit/verify/:id |
| chain(orgId) | GET /v1/audit/chain/:orgId |
| listPackets({ limit, cursor }) | GET /v1/audit/packets |
| proof.record(args) | POST /v1/audit/ingest |
| proof.verify({ packetId }) | GET /v1/audit/verify/:id |
| proof.chainVerify({ orgId }) | GET /v1/audit/chain/:orgId |
| proof.export({ limit, cursor }) | GET /v1/audit/packets |
| listConnectors() | GET /v1/connectors |
| registerConnector(body) | POST /v1/connectors/register |
| updateConnector(id, updates) | PATCH /v1/connectors/:id |
| deleteConnector(id) | DELETE /v1/connectors/:id |
| listKeys() | GET /v1/keys |
| createKey(body) | POST /v1/keys |
| deleteKey(id) | DELETE /v1/keys/:id |
| dashboardDebt({ days }) | GET /v1/dashboard/debt |
