Documentation Index
Fetch the complete documentation index at: https://haiprotocol.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The HAI Protocol is fully specified using OpenAPI 3.1.0. This specification defines all endpoints, message schemas, and protocol components for implementing HAIP-compliant clients and servers.Interactive Documentation
You can explore the complete HAI Protocol specification using the interactive OpenAPI documentation below:Key Components
Transport Endpoints
- WebSocket:
/haip/websocket- Primary real-time communication - Server-Sent Events:
/haip/sse- HTTP-based streaming - HTTP Streaming:
/haip/stream- Chunked transfer encoding
Message Structure
All HAIP messages follow a consistent envelope structure:Event Types
Core Events
HAI- Initial Message To Open ConnectionPING/PONG- Keep alive messagesINFO- Info messagesERROR- Error messageFLOW_UPDATE- Flow controlTRANSACTION_START- Start a new transactionTRANSACTION_END- End transactionTRANSACTION_JOIN- Join an existing transactionREPLAY_REQUEST- replay messagesMESSAGE- Send a message that will be validated against the tool schemaMESSAGE_UPDATE- Edit/delete messagesAUDIO- Send audio to a toolTOOL_LIST- List out all the toolsTOOL_SCHEMA- Get the schema for a tool
Authentication
HAIP allows the user to bring their own authentication. Which is converted into aHAIPUser:
{"MESSAGE": ["46ec7297-399c-40c5-bf5a-28503a3899b1"]}
Often you will want to give admins permissions to join all transactions and edit all messages.
Binary Frames
For audio, video, and file transmission, HAIP supports binary frames:- Envelope: JSON message with
bin_lenandbin_mime - Binary Data: Raw binary data following the envelope
- Fragmentation: Large files split into multiple frames
Flow Control
Credit-based back-pressure management:- Initial Credits: Configurable per user
- Credit Thresholds: Automatic credit requests
- Back-Pressure Detection: Automatic channel pausing
- Adaptive Adjustment: Performance-based credit tuning
Implementation Examples
These are examples that don’t use the existing SDK. We reccomend using the SDK, for most applications.WebSocket Client
Server-Sent Events Client
HTTP Streaming Client
Error Handling
HAIP defines standard error codes and recovery strategies:- 1000: Normal closure
- 1001: Going away
- 1002: Protocol error
- 1003: Unsupported data
- 1006: Abnormal closure
- 1007: Invalid frame payload
- 1008: Policy violation
- 1009: Message too big
- 1011: Internal error
Best Practices
Client Implementation
-
Connection Management
- Implement automatic reconnection
- Handle connection timeouts gracefully
- Use exponential backoff for retries
-
Message Handling
- Validate message structure
- Handle binary frames correctly
- Implement proper error recovery
-
Flow Control
- Respect credit limits
- Implement back-pressure handling
- Monitor performance metrics
Server Implementation
-
Authentication
- Validate credentials
- Check permissions
- Implement proper error responses
-
Message Processing
- Validate message schemas
- Handle binary data efficiently
- Implement proper flow control
-
Error Handling
- Provide meaningful error messages
- Implement proper cleanup
- Log errors for debugging
Testing
Use the provided OpenAPI specification to generate test cases and validate your implementation:Compliance
To ensure HAI Protocol compliance:- Schema Validation: Validate all messages against the OpenAPI schemas
- Event Handling: Implement all required event types
- Flow Control: Respect credit-based flow control
- Error Handling: Use standard error codes and messages
- Authentication: Implement JWT token validation