provider_unavailable
The provider is in the catalog but not yet available for new connections.
When it fires
You called POST /v1/connect/sessions/{sessionId}/select-provider with a provider that is in the public catalog but not yet available for new connections in your workspace. The catalog includes channels that are coming soon so the picker UI can render them ahead of full rollout.
Common triggers:
- Selecting a beta-only channel from a workspace that is not in the beta cohort.
- Selecting a channel that is region-locked and the workspace is in a region where it is not yet live.
- Selecting a channel during a brief maintenance window when new connections are paused.
Response shape
Every Repull error follows the same envelope. The code is stable and safe to switch on.
{
"error": {
"code": "provider_unavailable",
"message": "<human-readable explanation of what went wrong>",
"docs_url": "https://repull.dev/docs/errors/provider_unavailable"
}
}How to fix
- Read error.message — it names the provider and tells you the reason it is unavailable.
- Pick a different provider from the catalog — see /docs/pms-coverage for what is currently live.
- If you depend on the unavailable channel, email hello@repull.dev and we will add the workspace to the rollout.
- For region-locked channels: check whether the channel is available via OAuth in the workspace's region (the picker filters out unavailable ones automatically — calling them by id bypasses that filter).
Common gotchas
provider_unavailableis a workspace-level signal, not a global one. The same provider may be available in another workspace today.- The picker UI at
/connecthides unavailable providers automatically. If you callselect-providerdirectly with an id, you bypass that filter and can hit this code.
Examples
curl
# Bad: selecting a beta-only provider
# No API key — the session id is the capability token.
curl -X POST https://api.repull.dev/v1/connect/sessions/cs_01HXYZ/select-provider \
-H "Content-Type: application/json" \
-d '{"provider": "newchannel"}'
# HTTP/1.1 409 Conflict
# {
# "error": {
# "code": "provider_unavailable",
# "message": "NewChannel is not yet available"
# }
# }TypeScript
// Called by your own picker UI. The session id is the capability token (no API key).
const res = await fetch(
`https://api.repull.dev/v1/connect/sessions/${sessionId}/select-provider`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ provider: 'newchannel' }),
},
)
if (!res.ok) {
const { error } = await res.json()
if (error.code === 'provider_unavailable') {
// Surface to the user — they need to pick a different channel.
// repull.connect.providers() lists what the picker offers.
return { reason: 'provider_not_live', detail: error.message }
}
throw new Error(`${error.code}: ${error.message}`)
}If you're an AI agent
The provider exists in the catalog but is not live for this workspace. Do NOT retry the same provider. List available providers from /docs/pms-coverage and ask the user to pick another.
Related
- Error reference — the full table of error codes
- Using Repull from AI agents — patterns for handling errors in agent loops
- PMS Coverage
- Connect (multi-channel)
- no_connection
Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.