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 err.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
curl -X POST https://api.repull.dev/v1/connect/sessions/cs_01HXYZ/select-provider \
-H "Authorization: Bearer sk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"provider": "newchannel"}'
# HTTP/1.1 409 Conflict
# {
# "error": {
# "code": "provider_unavailable",
# "message": "NewChannel is not yet available"
# }
# }TypeScript
import { Repull } from '@repull/sdk'
const repull = new Repull({ apiKey: process.env.REPULL_KEY! })
try {
await repull.connect.sessions.selectProvider(sessionId, { provider: 'newchannel' })
} catch (err: any) {
if (err.code === 'provider_unavailable') {
// Surface to the user — they need to pick a different channel
return { reason: 'provider_not_live', detail: err.message }
}
throw err
}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.