Provider
How your org connects third-party accounts like Slack, and revokes them.
Also for this capability: API · CLI · SDKs
How your org connects third-party accounts like Slack, and revokes them.
| Base URL | https://api.hanzo.ai |
| Operations | 64 |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Specification
Specification pending — no HIP in hanzoai/hips declares capability: provider yet. What this capability serves is below, from the API document; what it is — the store it owns, how it meters, what it publishes — is written as a HIP under HIP-0139.
Four surfaces
| Surface | Reaches this capability as | Coverage |
|---|---|---|
| REST | provider at its own prefix | 64 operations |
| CLI | hanzo connection … | 64 of 64 |
| SDK | ProviderApi in every published client | 1 of 64 — the clients are generated at their own release |
| MCP | — | no tool names it yet — use HTTP or an SDK |
Quickstart
export HANZO_API_KEY=sk-... # console.hanzo.ai → API keysThen the first call — a read that needs nothing but the key. GET /v1/provider, operation get_provider:
hanzo provider listimport { Configuration, ProviderApi } from 'hanzoai';
const api = new ProviderApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getProvider();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ProviderApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ProviderApi(client).get_provider()cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.ProviderAPI.GetProvider(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, provider_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = provider_api::get_provider(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ProviderApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new ProviderApi(client).getProvider();curl https://api.hanzo.ai/v1/provider \
-H "Authorization: Bearer $HANZO_API_KEY"MCP declares no tool for provider — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
Answers 200 with object — ok.
Endpoints
| Endpoint | What it does |
|---|---|
POST /v1/connection/{id}/refresh | Forces a token rotation for a connected connector, ahead of the automatic rotation a token read would do inside the expiry window. |
GET /v1/connection/{id}/token | Hands the custodied access token to its owner — the ONE place custody exits. |
DELETE /v1/connection/{id} | Forgets a connector: every custodied secret, then the row. |
POST /v1/connection/{provider}/credential | Is the direct intake path: a customer-held token/setup-token (Verify) or an externally obtained OAuth bundle from the CLI's local PKCE (Adopt). |
POST /v1/connection/{provider}/device/{flow}/poll | Advances a device sign-in. |
POST /v1/connection/{provider}/device | Begins a device sign-in and returns the code to show the user plus how to poll for completion. |
GET /v1/connection/providers | Lists the USER-plane provider cards. |
GET /v1/connection | Lists the caller's OWN connectors across every provider — the set hanzo connector ls prints. |
GET /v1/provider/{provider}/callback | OAuth return for any connector |
POST /v1/provider/{provider}/connect | Acquires the org's credential for one provider. |
POST /v1/provider/{provider}/disconnect | Revokes (best-effort) and forgets an org's connection: it deletes every custodied KMS secret and the connection row. |
POST /v1/provider/{provider}/verify | Re-checks a CONNECTED apikey connector's stored credential against the provider, live (hanzo connector verify). |
GET /v1/provider/{provider} | Returns ONE provider with this org's connection status — the same view list carries, for a single id. |
POST /v1/provider/discord/interactions | Discord interactions endpoint |
GET /v1/provider/discord/link/callback | Complete the Discord account link |
GET /v1/provider/discord/link/discord | Discord sign-in return leg |
GET /v1/provider/discord/link | Begin linking a Hanzo account from Discord |
POST /v1/provider/forge/webhook | Forge workflow_job webhook |
POST /v1/provider/github/claim | Binds installations the App ALREADY holds to the org the caller is acting in — the reconciliation for a grant that happened outside our connect flow. |
POST /v1/provider/github/fork | Forks a granted repository. |
GET /v1/provider/github/installations | Lists the GitHub accounts the caller may see the App installed on, each confirmed against the App's own list, plus where to add another. |
POST /v1/provider/github/issues/backfill | Seeds the native todo with the EXISTING issues across the org's granted repos (default state=open); the webhook keeps them live thereafter. |
POST /v1/provider/github/repos/{repo}/pages/builds | Requests a Pages rebuild and returns the queued build's status. |
GET /v1/provider/github/repos/{repo}/pages | Returns the repo's Pages status, live URL, custom domain and build source. |
POST /v1/provider/github/repos/{repo}/pages | Creates the repo's Pages site and answers 201 Created with it. |
PUT /v1/provider/github/repos/{repo}/pages | Sets or clears the custom domain (cname) and updates HTTPS enforcement, build type, or source. |
DELETE /v1/provider/github/repos/{repo}/pages | Deletes the repo's Pages site. |
POST /v1/provider/github/repos/import | Imports the selected (or all) granted repos into git.hanzo.ai. |
GET /v1/provider/github/repos | Lists the org's granted GitHub repositories, each annotated with its native import + sync status from the git object plane. |
POST /v1/provider/github/search | Finds repositories on GitHub. |
POST /v1/provider/github/webhook | GitHub App webhook |
GET /v1/provider/gitlab/projects | Lists the projects the org's GitLab connection can reach — membership projects, most recently active first. |
POST /v1/provider/linear/claim | Binds the caller's Linear organization to the org and seals the webhook secret. |
POST /v1/provider/linear/comments | Posts a comment on a Linear issue with the caller's own key, so it carries their name. |
POST /v1/provider/linear/issues/backfill | Seeds the native todo with the EXISTING Linear issues the caller's key can see (default state=open); the webhook keeps them live thereafter. |
POST /v1/provider/linear/webhook | Linear webhook |
POST /v1/provider/openrouter/webhook | Receive OpenRouter Broadcast traces as usage rows |
GET /v1/provider/slack/channels | Lists Slack conversations for the caller's connected workspace. |
POST /v1/provider/slack/commands | Slack slash command webhook |
POST /v1/provider/slack/events | Slack Events API webhook |
GET /v1/provider/slack/file | Read one Slack file's bytes. |
GET /v1/provider/slack/install | Install the Hanzo app into a Slack workspace |
POST /v1/provider/slack/join | Joins every public channel in the caller org's workspace. |
GET /v1/provider/slack/link/callback | Complete the Slack account link |
GET /v1/provider/slack/link/slack | Slack sign-in return leg |
GET /v1/provider/slack/link | Begin linking a Hanzo account from Slack |
GET /v1/provider/slack/messages | Reads recent messages from a named Slack channel such as #hanzo-gtm. |
POST /v1/provider/slack/messages | Posts as Hanzo to the caller's connected Slack workspace. |
PUT /v1/provider/slack/messages | Rewrites one of this app's messages: PUT /v1/provider/slack/messages. |
DELETE /v1/provider/slack/messages | Takes back one of this app's messages: DELETE /v1/provider/slack/messages. |
POST /v1/provider/slack/reactions | Adds an emoji reaction: POST /v1/provider/slack/reactions. |
POST /v1/provider/slack/search | Answers a workspace question: POST /v1/provider/slack/search. |
POST /v1/provider/teams/events | Microsoft Teams Bot Framework webhook |
GET /v1/provider/teams/link/aad | Microsoft sign-in return leg |
GET /v1/provider/teams/link/callback | Complete the Teams account link |
GET /v1/provider/teams/link | Begin linking a Hanzo account from Teams |
POST /v1/provider/telegram/connect | Mints a short, single-use deep-link code bound to the caller's org and returns the t.me link the console navigates to. |
GET /v1/provider/telegram/link/auth | Telegram Login Widget return leg |
GET /v1/provider/telegram/link/callback | Complete the Telegram account link |
GET /v1/provider/telegram/link | Begin linking a Hanzo account from Telegram |
POST /v1/provider/telegram/webhook | Telegram Bot API webhook |
GET /v1/provider/whatsapp/webhook | WhatsApp Cloud API subscription challenge |
POST /v1/provider/whatsapp/webhook | WhatsApp Cloud API webhook |
GET /v1/provider | Returns every registered integration provider together with THIS org's connection status for it — the catalog the console's Integrations page renders. |
How is this guide?