Create poll

Advances a device sign-in.

POST /v1/connection/{provider}/device/{flow}/poll

Addresshttps://api.hanzo.ai/v1/connection/{provider}/device/{flow}/poll
MethodPOST
Operationpost_connection_by_provider_device_by_flow_poll
AuthAuthorization: Bearer $HANZO_API_KEY

Advances a device sign-in. Terminal outcomes are DATA, not errors (verifyConn {active:false} discipline) — the status set is closed: pending|connected|denied|expired. pollSlow collapses to "pending" on the wire; the raised cadence rides interval.

Request

2 fields.

FieldInTypeRequiredDescription
providerpathstringyesProvider is the user-scoped provider's registry id, from the path.
flowpathstringyesFlow is the id deviceStartOut returned.

Response

StatusBodyMeaning
200provider.devicePollOutok
defaultproblem-detailsrefused

200 body — 11 fields.

FieldInTypeAlwaysDescription
connectorbodyprovider.connectionView—
connector.accountbodystring—Account is the human label of the connected third-party account (the Slack team name, the GitHub org login).
connector.connectedAtbodystring—ConnectedAt is when the connection was last (re)established, RFC 3339 UTC.
connector.expiresAtbodystring—ExpiresAt is when the access token expires, RFC 3339 UTC; empty for a credential that does not expire.
connector.externalIdbodystring—ExternalID is the provider's own id for the account (Slack team.id, GitHub installation_id) — the value inbound webhooks are mapped back to this org by.
connector.idbodystring—ID is provider + ":" + label, the address every connection route takes.
connector.labelbodystring—Label is the caller's own name for this connection ("default", "work").
connector.providerbodystring—Provider is the connected provider's registry id.
connector.scopesbodystring[]—Scopes are the permissions the provider granted.
intervalbodyinteger (int64)—Interval is the seconds to wait before the next poll.
statusbodystring—Status is the flow's state.

Failure carries the platform error shape — see Errors.

Examples

hanzo connection device poll <provider> <flow>
import { Configuration, ProviderApi } from 'hanzoai';

const api = new ProviderApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postConnectionByProviderDeviceByFlowPoll({ provider: 'provider', flow: 'flow' });
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).post_connection_by_provider_device_by_flow_poll(provider='provider', flow='flow')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProviderAPI.PostConnectionByProviderDeviceByFlowPoll(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::post_connection_by_provider_device_by_flow_poll(&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).postConnectionByProviderDeviceByFlowPoll();
curl -X POST https://api.hanzo.ai/v1/connection/<provider>/device/<flow>/poll \
  -H "Authorization: Bearer $HANZO_API_KEY"

MCP reaches provider through the provider tool, which names its 38 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_connections"
         }
       }
     }'

Provider API · All Hanzo APIs · Interactive reference

Was this page useful?