API Reference

Complete SDK and HTTP endpoint documentation

Client SDK API

window.HumanPulse.init(elementId)

Initialize keystroke tracking on a specific element

Parameters

elementId: string - ID of textarea, input, or contenteditable element

Returns

void

Example

window.HumanPulse.init('my-textarea');

window.HumanPulse.finalize()

Finalize session and generate cryptographic proof

Returns

Promise<{ success: boolean; certificateUrl: string; stats: { score: number; isFlagged: boolean; } }>

Example

const result = await window.HumanPulse.finalize(); console.log(result.certificateUrl);

window.HumanPulse.getSessionId()

Get the current session ID

Returns

string | null

Example

const sid = window.HumanPulse.getSessionId();

window.HumanPulse.onKeystroke(callback)

Subscribe to keystroke events for real-time visualization

Parameters

callback: (event: { timestamp: number; latency: number; delta_length: number; }) => void

Returns

() => void (unsubscribe function)

Example

const unsubscribe = window.HumanPulse.onKeystroke((event) => { console.log('IKI:', event.latency); }); // Later: unsubscribe();

HTTP Endpoints

POST /api/session/init

Initialize a new tracking session

Response:

{ "sessionId": "uuid-v4-string" }

POST /api/session/pulse

Record a keystroke event (called by SDK)

Body:

{ "sessionId": "string", "telemetry": { "timestamp": number, "latency": number, "delta_length": number } }

GET /api/session/score

Get real-time humanity score for a session

Query:

?sessionId=uuid-string

Response:

{ "score": number (0-100), "isFlagged": boolean, "totalKeystrokes": number }

POST /api/session/finalize

Finalize session and generate C2PA certificate

Body:

{ "sessionId": "string" }

Response:

{ "success": boolean, "stats": { score, isFlagged, totalKeystrokes }, "certificateUrl": "https://..." }

Error Handling

400Missing sessionId or invalid parameters
403Session expired or invalid signature
500Durable Object or R2 binding error