Let your customers connect their Talentir teams to your platform.
For platform integrations, use the OAuth 2.1 authorization code flow with PKCE: you redirect your customer to Talentir's hosted authorization screens, they sign in (or sign up), select or create their team, and consent. Your server then exchanges the code for tokens scoped to that team.
Create it in the dashboard (recommended): go to Settings → OAuth Clients in your Talentir team dashboard, enter a name and your callback URL(s), and you receive a client_id and client_secret (shown once, with copy and download). Clients created there are attributed to your team, which unlocks the partner-program features: teams created through your authorize flow are credited to your platform, and hosted sessions can carry your white-label branding.
Deprecated — dynamic client registration (RFC 7591) via the registration_endpoint still works (it needs no dashboard or signup, and AI/MCP tooling relies on it), but it is deprecated for platform integrations and may be restricted in the future. Dynamically registered clients are anonymous — no attribution, no platform branding — and cannot be managed or edited afterwards.
GET /.well-known/oauth-authorization-server/api/authThis returns the authorization_endpoint, token_endpoint, registration_endpoint, and jwks_uri.
code_challenge / code_challenge_method=S256 — PKCE is mandatory.resource=<base_url>/api/v1 on both /authorize and /token, so the token's aud claim binds to the API v1 resource (for production: https://www.talentir.com/api/v1).https://talentir.com/oauth/team_id claim.offline_access in the scope list to receive a refresh token.Add any of these query parameters to the /authorize request to pre-fill the hosted screens when you already know who is connecting. They are hints only — the authenticated account and the selected team are always verified server-side.
| Parameter | Value | Effect |
|---|---|---|
login_hint | Email address | Pre-fills the email and emails the one-time sign-in code automatically (social/passkey sign-in is hidden). If the user is already signed in with a different email, they are asked to switch accounts first. |
team_hint | A team id (UUID) from GET /team | Pre-selects that team on the team step. Ignored if the signed-in user is not a member of it. |
team_name | String | Pre-fills the suggested name when a new user who has no team yet is prompted to create one. |
Example (URL-encode the values in practice):
https://www.talentir.com/api/auth/oauth2/authorize?response_type=code&client_id=<client_id>
&redirect_uri=<redirect_uri>&scope=team:read payouts:write
&code_challenge=<challenge>&code_challenge_method=S256
&resource=https://www.talentir.com/api/v1
&login_hint=creator@example.com
&team_hint=4399dd07-cf1b-414b-bfbc-91a88dd73ec5Teams created during your authorize flow are automatically attributed to your platform when your OAuth client was created in the dashboard. Partner-program enrollment (referral terms, white-label) is handled by Talentir — contact us to enroll.
See Scopes and permissions for the full table.
Open an endpoint in the API reference and select Test to use the Scalar API client. You need a client_id to run the OAuth flow. The quickest way for testing is a throwaway dynamically registered client:
curl -sX POST https://sandbox.talentir.com/api/auth/oauth2/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "Talentir API Docs",
"redirect_uris": ["https://sandbox.talentir.com/api/v1"],
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"]
}' | jqCopy the client_id from the response, open the console, click Authorize, paste it, and run the flow. Docs-testing clients are dynamically registered, so they are anonymous — no attribution or platform branding.