Two ways to connect, one token endpoint.
Public OAuth apps let customers install your integration into their HAL project in a couple of clicks. Private clients cover first-party, project-owned integrations.
Pick the right integration surface
- Public API + API key — you are the HAL customer automating your own workspace. No OAuth needed.
- MCP — AI agents and coding tools reading/acting on HAL data. No OAuth needed.
- OAuth — other people's software connecting to other people's HAL accounts. You're building an integration for distribution.
Public widget app installs
Public apps are project-scoped and grant widget:serve only — enough to serve and identify the widget on the customer's site, nothing more. The flow:
- Your app initiates authorization for the customer's project.
- The customer approves the install in HAL's authorize screen (client metadata loads via
GET /api/oauth/client?client_id=…). - Exchange the code at the token endpoint.
POST /oauth/token
{
"access_token": "…",
"refresh_token": "…",
"project_id": "…",
"widget_script_url": "https://api.chatwithhal.com/widget.js",
"api_base_url": "https://api.chatwithhal.com"
}The response carries everything an embed needs — script URL and API base included — so your installer can complete without further configuration.
Legacy private clients
Project-owned private clients remain available for first-party, one-off integrations. Managed under the project (list, create, delete), their token response returns app_id and widget_secret for direct widget provisioning.
Managing installs
GET /api/projects/{id}/oauth-clients # private clients
POST /api/projects/{id}/oauth-clients
DELETE /api/projects/{id}/oauth-clients/{clientId}
GET /api/projects/{id}/oauth-connections # public installs
DELETE /api/projects/{id}/oauth-connections/{id} # revokeHandling identities in installed widgets
Widget connections that identify visitors should sign identities — POST /api/oauth/widget/sign-identity issues the HMAC using HAL-held per-install credentials, so your integration server never needs the customer's identity secret. See identity verification.