For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
ModelsChatRankingsDocs
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
    • Overview
    • Usage for Agents
  • TypeScript SDK
    • Overview
  • Python SDK
    • Overview
      • Analytics
      • APIKeys
      • Byok
      • Chat
      • Credits
      • Embeddings
      • Endpoints
      • Generations
      • Guardrails
      • OAuth
      • Observability
      • Organization
      • Presets
      • Providers
      • Rerank
      • Beta.Responses
      • Transcriptions
      • Speech
      • VideoGeneration
      • Workspaces
  • Go SDK
  • DevTools
    • Overview
    • Migrating to @openrouter/agent
LogoLogo
ModelsChatRankingsDocs
On this page
  • Overview
  • Available Operations
  • exchange_auth_code_for_api_key
  • Example Usage
  • Parameters
  • Response
  • Errors
  • create_auth_code
  • Example Usage
  • Parameters
  • Response
  • Errors
Python SDKAPI Reference

OAuth - Python SDK

OAuth method reference
Was this page helpful?
Previous

Observability - Python SDK

Observability method reference
Next
Built with

The Python SDK and docs are currently in beta. Report issues on GitHub.

Overview

OAuth authentication endpoints

Available Operations

  • exchange_auth_code_for_api_key - Exchange authorization code for API key
  • create_auth_code - Create authorization code

exchange_auth_code_for_api_key

Exchange an authorization code from the PKCE flow for a user-controlled API key

Example Usage

1from openrouter import OpenRouter
2import os
3
4with OpenRouter(
5 http_referer="<value>",
6 x_open_router_title="<value>",
7 x_open_router_categories="<value>",
8 api_key=os.getenv("OPENROUTER_API_KEY", ""),
9) as open_router:
10
11 res = open_router.o_auth.exchange_auth_code_for_api_key(code="auth_code_abc123def456", code_challenge_method="S256", code_verifier="dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk")
12
13 # Handle response
14 print(res)

Parameters

ParameterTypeRequiredDescriptionExample
codestr✔️The authorization code received from the OAuth redirectauth_code_abc123def456
http_refererOptional[str]➖The app identifier should be your app’s URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
x_open_router_titleOptional[str]➖The app display name allows you to customize how your app appears in OpenRouter’s dashboard.
x_open_router_categoriesOptional[str]➖Comma-separated list of app categories (e.g. “cli-agent,cloud-agent”). Used for marketplace rankings.
code_challenge_methodOptionalNullable[operations.ExchangeAuthCodeForAPIKeyCodeChallengeMethod]➖The method used to generate the code challengeS256
code_verifierOptional[str]➖The code verifier if code_challenge was used in the authorization requestdBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
retriesOptional[utils.RetryConfig]➖Configuration to override the default retry behavior of the client.

Response

operations.ExchangeAuthCodeForAPIKeyResponse

Errors

Error TypeStatus CodeContent Type
errors.BadRequestResponseError400application/json
errors.ForbiddenResponseError403application/json
errors.InternalServerResponseError500application/json
errors.OpenRouterDefaultError4XX, 5XX*/*

create_auth_code

Create an authorization code for the PKCE flow to generate a user-controlled API key

Example Usage

1from openrouter import OpenRouter
2import os
3
4with OpenRouter(
5 http_referer="<value>",
6 x_open_router_title="<value>",
7 x_open_router_categories="<value>",
8 api_key=os.getenv("OPENROUTER_API_KEY", ""),
9) as open_router:
10
11 res = open_router.o_auth.create_auth_code(callback_url="https://myapp.com/auth/callback", code_challenge="E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM", code_challenge_method="S256", limit=100)
12
13 # Handle response
14 print(res)

Parameters

ParameterTypeRequiredDescriptionExample
callback_urlstr✔️The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are allowed.https://myapp.com/auth/callback
http_refererOptional[str]➖The app identifier should be your app’s URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
x_open_router_titleOptional[str]➖The app display name allows you to customize how your app appears in OpenRouter’s dashboard.
x_open_router_categoriesOptional[str]➖Comma-separated list of app categories (e.g. “cli-agent,cloud-agent”). Used for marketplace rankings.
code_challengeOptional[str]➖PKCE code challenge for enhanced securityE9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
code_challenge_methodOptional[operations.CreateAuthKeysCodeCodeChallengeMethod]➖The method used to generate the code challengeS256
expires_atdate➖Optional expiration time for the API key to be created2027-12-31T23:59:59Z
key_labelOptional[str]➖Optional custom label for the API key. Defaults to the app name if not provided.My Custom Key
limitOptional[float]➖Credit limit for the API key to be created100
usage_limit_typeOptional[operations.UsageLimitType]➖Optional credit limit reset interval. When set, the credit limit resets on this interval.monthly
retriesOptional[utils.RetryConfig]➖Configuration to override the default retry behavior of the client.

Response

operations.CreateAuthKeysCodeResponse

Errors

Error TypeStatus CodeContent Type
errors.BadRequestResponseError400application/json
errors.UnauthorizedResponseError401application/json
errors.ConflictResponseError409application/json
errors.InternalServerResponseError500application/json
errors.OpenRouterDefaultError4XX, 5XX*/*