Skip to content

OpenID Connect discovery document (OIDC Discovery 1.0 §3)

GET /.well-known/openid-configuration

Turns this authorization server into an OpenID provider as far as a relying party is concerned — the control an OpenAI ChatGPT Business or Enterprise admin needs to restrict a connector to their own domain. It restates `/.well-known/oauth-authorization-server` rather than configuring a second server: same `issuer`, endpoints, `openid`/`email`-inclusive scope catalog and S256-only PKCE rule, so a client reading either document reaches the same server. Public, unauthenticated, CORS-open and cached for one hour on the same terms as the other two `.well-known` documents. **Deliberately missing two members OIDC Discovery marks REQUIRED: `jwks_uri` and `id_token_signing_alg_values_supported`.** Both describe how to verify an ID token, and this server issues none — identity is read from `GET/POST /oauth/userinfo` instead, which OpenAI's own documentation names as the mandatory half (the ID token is the alternative). An absent member fails honestly; a present and false one would not. `subject_types_supported: ["public"]` matches what `/oauth/userinfo` actually returns: the same subject to every client, never a pairwise identifier.

Response Body

authorization_endpointstring · uri
claims_supportedstring[]

Exactly the claims /oauth/userinfo can return, and no more.

Possible values:
subemailemail_verified
code_challenge_methods_supportedstring[]
Possible values:
S256
grant_types_supportedstring[]
Possible values:
authorization_coderefresh_token
issuerstring · uri
registration_endpointstring · uri
response_types_supportedstring[]
revocation_endpointstring · uri
scopes_supportedstring[]
Possible values:
mcp:readmcp:writemcp:destructivemcp:toolsopenidemail
service_documentationstring · uri
subject_types_supportedstring[]

Always ["public"] — the subject is the same sub for every client, never pairwise.

Possible values:
public
token_endpointstring · uri
token_endpoint_auth_methods_supportedstring[]
Possible values:
noneclient_secret_postclient_secret_basic
userinfo_endpointstring · uri
curl -X GET 'https://api.elaichi.ai/.well-known/openid-configuration' \
  -H 'Content-Type: application/json'
const response = await fetch('https://api.elaichi.ai/.well-known/openid-configuration', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/.well-known/openid-configuration"
headers = {
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)
print(response.json())