provod.ai / docs
Integrations

Connect coding tools

Configure Cline, Roo Code, Kilo Code, Continue, Aider, Zed, and Cursor for the provod.ai API.

Last updated on

Check compatibility

In these tools, a provider is a saved connection that supplies an API URL, key, and model settings.

ToolInterface or configuration pathStatus and key caveat
ClineOpenAI Compatible in VS Code settingsCompatible; enter an exact catalog ID manually.
Roo CodeSettings → Providers → OpenAI CompatibleCompatible; remove a stale built-in model selection.
Kilo CodeProviders → OpenAI CompatibleCompatible; select the custom provider explicitly.
ContinueLocal config.yaml, provider openaiChat Completions only; keep useResponsesApi: false.
AiderShell environmentCompatible; invoke the catalog ID as openai/<catalog-id>.
Zedsettings.json and the provider keychainCompatible; generate the model ID and limit from the live catalog.
CursorOverride OpenAI Base URLVersion-dependent; proceed only when this field is available.
Claude CodeDedicated guideCompatible through Anthropic Messages; its base URL omits /v1.
OpenCodeDedicated guideCompatible through the installer or a manual provider.
Codex CLISupport statusUnsupported while the required /v1/responses endpoint is absent.

Select and verify a model first

OpenAI-compatible tools on this page share these values:

ValueSetting
Base URLhttps://api.provod.ai/v1
API keyA key created in the cabinet
Model IDAn available exact id from the current catalog

Run this from a shell with curl and jq. It requires an available text model with both tools and the max_tokens used by the verification request, and excludes image endpoint entries:

Terminal
set -euo pipefail

export PROVOD_API_KEY="sk_..."

if ! MODELS_JSON="$(
  curl --fail-with-body --silent --show-error "https://api.provod.ai/v1/models?output_modalities=text&supported_parameters=tools,max_tokens" \
    -H "Authorization: Bearer $PROVOD_API_KEY"
)"; then
  printf '%s\n' "$MODELS_JSON" >&2
  exit 1
fi

if ! PROVOD_MODEL="$(
  jq -er '
    first(
      .data[]
      | select(
          .available == true
          and ((.architecture.output_modalities // []) | index("text"))
          and ((.supported_parameters // []) | index("tools"))
          and ((.supported_parameters // []) | index("max_tokens"))
          and ((.supported_endpoint_types // []) | all(. != "image-generation" and . != "image-edit"))
        )
      | .id
    )
  ' <<<"$MODELS_JSON"
)"; then
  printf 'No available tool-capable text model found in /v1/models.\n' >&2
  exit 1
fi

export PROVOD_MODEL

jq -n --arg model "$PROVOD_MODEL" '{
  model: $model,
  messages: [{role: "user", content: "Reply with ok"}],
  max_tokens: 64
}' | curl --fail-with-body --silent --show-error https://api.provod.ai/v1/chat/completions \
  -H "Authorization: Bearer $PROVOD_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @-

If this fails, fix the key, catalog selection, or request before changing tool settings. If it succeeds, compare the tool's final URL, protocol, exact model ID, and key source with these verified values.

Protect the API key

Keep the key in an environment variable, operating-system keychain, protected local tool configuration, or trusted backend. Never put it in browser code or commit it to a repository. Revoke it in the cabinet if a local configuration is exposed.

Configure Chat Completions tools

Cline, Roo Code, and Kilo Code

Open the interface named in the matrix and enter https://api.provod.ai/v1, the value exported as PROVOD_API_KEY, and the exact PROVOD_MODEL selected above. Start one short task before enabling tools or long agent work. If the direct request succeeds but an extension fails, reselect the custom provider and remove any stale built-in model override.

Continue

Add an OpenAI model entry to Continue's protected local configuration. Paste the current value of PROVOD_API_KEY into apiKey, replace the model placeholder with PROVOD_MODEL, and keep useResponsesApi: false:

YAML
name: provod.ai
version: 1.0.0
schema: v1
models:
  - name: provod.ai
    provider: openai
    model: model-id-from-PROVOD_MODEL
    apiBase: https://api.provod.ai/v1
    apiKey: paste-value-from-PROVOD_API_KEY
    useResponsesApi: false
    roles:
      - chat
      - edit
      - apply

Select the entry and confirm that the client calls /v1/chat/completions, not /v1/responses.

Aider

After running the model-selection flow above, set Aider's OpenAI-compatible variables and prefix the exact catalog ID with openai/:

Terminal
export OPENAI_API_KEY="$PROVOD_API_KEY"
export OPENAI_API_BASE="https://api.provod.ai/v1"

aider --model "openai/$PROVOD_MODEL"

Check Aider's model banner before allowing file changes. If it differs, compare the environment visible to Aider with the shell where the direct request succeeded.

Zed

Use the MODELS_JSON captured by the selection flow to generate a complete language_models object from a live available tool-capable text model and its current context_length. The generated capability tells Zed to send the model's published max_tokens parameter instead of Zed's default max_completion_tokens:

Terminal
if ! ZED_SETTINGS="$(
  jq -er '
    first(
      .data[]
      | select(
          .available == true
          and ((.architecture.output_modalities // []) | index("text"))
          and ((.supported_parameters // []) | index("tools"))
          and (.context_length | type == "number" and . > 0)
          and ((.supported_endpoint_types // []) | all(. != "image-generation" and . != "image-edit"))
        )
    ) as $model
    | {
        language_models: {
          openai_compatible: {
            "provod.ai": {
              api_url: "https://api.provod.ai/v1",
              available_models: [
                {
                  name: $model.id,
                  display_name: ($model.name // $model.id),
                  max_tokens: $model.context_length,
                  capabilities: {
                    tools: true,
                    images: false,
                    parallel_tool_calls: false,
                    prompt_cache_key: false,
                    chat_completions: true,
                    interleaved_reasoning: false,
                    max_tokens_parameter: true
                  }
                }
              ]
            }
          }
        }
      }
  ' <<<"$MODELS_JSON"
)"; then
  printf 'No available Zed-compatible model found in /v1/models.\n' >&2
  exit 1
fi

printf '%s\n' "$ZED_SETTINGS"

Merge the printed object into settings.json. Enter the value of PROVOD_API_KEY through Zed's provider settings so the operating-system keychain stores it; do not put the key in settings.json. Then select the custom model and send one short prompt.

Cursor

Proceed only if your Cursor version exposes Override OpenAI Base URL. Set it to https://api.provod.ai/v1, enter the value of PROVOD_API_KEY, and add the exact PROVOD_MODEL. Confirm from Cursor's available diagnostics that the request uses the override. If the field is absent or Cursor sends another protocol, do not send the key to an unverified path.

Dedicated guides

Create and rotate keys as described in API authentication. Refresh current model IDs, limits, and supported options through the model catalog.

A public error code is the client-facing error.code returned by the API. Record it with the HTTP status, tool version, final endpoint, exact model ID, time, and masked key prefix; do not include the complete key.

Troubleshooting

On this page