provider_unavailable

The provider is in the catalog but not yet available for new connections.

HTTP 409The resource is not in a state that allows this operation.

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

  1. Read err.message — it names the provider and tells you the reason it is unavailable.
  2. Pick a different provider from the catalog — see /docs/pms-coverage for what is currently live.
  3. If you depend on the unavailable channel, email hello@repull.dev and we will add the workspace to the rollout.
  4. 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_unavailable is a workspace-level signal, not a global one. The same provider may be available in another workspace today.
  • The picker UI at /connect hides unavailable providers automatically. If you call select-provider directly 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.

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI