> For the complete documentation index, see [llms.txt](https://docs.defguard.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.defguard.net/for-developers/rest-api/core/open-id/create-an-openid-provider.md).

# Create an OpenID provider

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"tags":[{"name":"OpenID","description":"External OpenID providers used for logging in to defguard."}],"security":[{"cookie":[]},{"api_token":[]}],"components":{"securitySchemes":{"cookie":{"type":"apiKey","in":"cookie","name":"defguard_session"},"api_token":{"type":"http","scheme":"bearer"}},"schemas":{"AddProviderData":{"type":"object","required":["name","base_url","kind","client_id","client_secret","directory_sync_enabled","directory_sync_interval","directory_sync_user_behavior","directory_sync_admin_behavior","directory_sync_target","prefetch_users","create_account","username_handling"],"properties":{"admin_email":{"type":["string","null"]},"base_url":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"create_account":{"type":"boolean"},"directory_sync_admin_behavior":{"type":"string"},"directory_sync_enabled":{"type":"boolean"},"directory_sync_group_match":{"type":["string","null"]},"directory_sync_interval":{"type":"integer","format":"int32"},"directory_sync_target":{"type":"string"},"directory_sync_user_behavior":{"type":"string"},"directory_sync_user_groups":{"type":["string","null"]},"display_name":{"type":["string","null"]},"google_service_account_email":{"type":["string","null"]},"google_service_account_key":{"type":["string","null"]},"jumpcloud_api_key":{"type":["string","null"]},"kind":{"$ref":"#/components/schemas/OpenIdProviderKind"},"name":{"type":"string"},"okta_dirsync_client_id":{"type":["string","null"]},"okta_private_jwk":{"type":["string","null"]},"prefetch_users":{"type":"boolean"},"username_handling":{"$ref":"#/components/schemas/OpenIdUsernameHandling"}}},"OpenIdProviderKind":{"type":"string","enum":["Custom","Google","Microsoft","Okta","JumpCloud","Zitadel"]},"OpenIdUsernameHandling":{"type":"string","enum":["RemoveForbidden","ReplaceForbidden","PruneEmailDomain"]},"ApiErrorResponse":{"type":"object","description":"Body returned with error responses.","required":["msg"],"properties":{"code":{"type":["string","null"],"description":"Machine-readable error code, returned for selected errors."},"msg":{"type":"string","description":"Human-readable error message."}}}}},"paths":{"/api/v1/openid/provider":{"post":{"tags":["OpenID"],"summary":"Create an OpenID provider","operationId":"add_openid_provider","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProviderData"}}},"required":true},"responses":{"201":{"description":"OpenID provider created."},"400":{"description":"Invalid provider configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Session is missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Requires admin privileges and an active enterprise license.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Unable to create OpenID provider.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
