Widget identify routes
Use these when your product or backend needs to push end-user, contact, or company context into HAL for a visitor session.
The API is the lowest-level integration surface. Use it for project data, workflow updates, and customer records when you are integrating HAL into your own backend.
https://api.chatwithhal.com/apiHAL exposes more than one HTTP surface, so the authentication method depends on which route family you are calling.
/api/widget/* is designed for customer-facing widget flows and uses project identification plus visitor identity input/api/* account routes use bearer-token authentication for signed-in HAL users and first-party backends/api/v1/* public integration routes use X-API-KeyAuthorization: Bearer YOUR_TOKEN
X-API-Key: YOUR_API_KEYUse these when your product or backend needs to push end-user, contact, or company context into HAL for a visitor session.
Use these when a signed-in HAL workspace owner or internal backend is managing records directly.
Use these for external integrations that need conversations and contacts through /api/v1.
If your goal is to send custom contact or company information from your app into HAL, use the widget-facing identify flow rather than the current /api/v1 surface.
The current public API key routes cover conversations and contacts, but they do not yet expose visitor/company metadata write endpoints. For customer identity and CRM enrichment tied to a widget visitor, see the visitor API details and widget identification docs.
That widget route family also includes CRM write endpoints such as POST /api/widget/set-stage and POST /api/widget/set-deal, plus simple tracked events through POST /api/widget/track, which backs window.HalWidget.track(...) in the browser widget.
/api/widget/identify when a product session or signed-in user should be mapped to HAL contacts and companies/api/widget/set-properties for follow-up visitor/contact metadata writes after identify/api/widget/track for milestone events with a required name and optional scalar value/api/widget/set-stage and /api/widget/set-deal when the widget-side session should push company stage or deal changes/api/contacts and /api/companies routes when an authenticated HAL workspace user or first-party backend manages CRM records directly/api/v1 when an external integration with an API key only needs conversation or contact accessVisitor identity, linked companies, milestone event tracking, stage sync, deal sync, and property updates for customer-facing sessions.
Direct contact and company CRUD for signed-in HAL users and internal backends acting on behalf of a workspace.
Conversations and contacts only today; visitor-company enrichment is intentionally outside this surface for now.
Push or sync data between HAL and the rest of your stack when the built-in UI is not enough.
Wire up internal tools, admin panels, or provisioning systems to the same project data HAL uses.
Use the API when you need system-to-system actions beyond the approval-gated Manager experience.
If you are connecting an external AI client and want tool-style access rather than raw REST integration, use the hosted HTTP MCP endpoint instead of building your own orchestration on top of the REST API.
Use MCP for AI clients, OAuth for delegated access, and the widget for customer-facing entry points.