Complete a GitHub sign-in
const url = 'https://api.deploybase.eu/api/v1/api/v1/auth/idp/callback';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"intent_id":"example","token":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.deploybase.eu/api/v1/api/v1/auth/idp/callback \ --header 'Content-Type: application/json' \ --data '{ "intent_id": "example", "token": "example" }'Verifies a Zitadel IdP intent and reports whether it belongs to a linked user, an existing account that must confirm the link, or a new customer (which is provisioned, subject to the signup abuse guards). No authentication required.
Request Body
Section titled “ Request Body ”Completed IdP intent
object
IntentID is the Zitadel IdP intent id from the callback URL.
Token is that intent’s single-use token. It is a bearer credential for the intent: never log it.
Example generated
{ "intent_id": "example", "token": "example"}Responses
Section titled “ Responses ”Already linked, or an existing account that must confirm the link
object
object
object
Email is the provider’s verified address. Set on link_required and created.
The pendingIdpLink material, set on link_required only.
OrgID is the new organization. Set on created.
Outcome is “linked”, “link_required” or “created”.
UserID is the Zitadel user to create a session for. Set on linked and created.
Example generated
{ "data": { "email": "example", "existing_org_id": "example", "existing_user_id": "example", "org_id": "example", "outcome": "example", "provider_user_id": "example", "provider_user_name": "example", "user_id": "example" }, "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}A new team was provisioned
object
object
object
Email is the provider’s verified address. Set on link_required and created.
The pendingIdpLink material, set on link_required only.
OrgID is the new organization. Set on created.
Outcome is “linked”, “link_required” or “created”.
UserID is the Zitadel user to create a session for. Set on linked and created.
Example generated
{ "data": { "email": "example", "existing_org_id": "example", "existing_user_id": "example", "org_id": "example", "outcome": "example", "provider_user_id": "example", "provider_user_name": "example", "user_id": "example" }, "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}The intent is invalid, the provider shared no verified email, or the signup was refused by the abuse gate
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}The sign-in could not be completed
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Signups are temporarily closed, or IdP sign-in is unconfigured
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}