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 elementReturns
voidExample
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 | nullExample
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;
}) => voidReturns
() => 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-stringResponse:
{
"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 parameters403Session expired or invalid signature500Durable Object or R2 binding error