Create an OAuth app
Registers your own OAuth app so the mailbox consent screen carries your product’s name rather than AI Inbx. The response returns the redirect_uri to register with the provider, a hosted connect_url, and — for Google — the push_endpoint your own Pub/Sub topic should publish to. The slug is claimed globally because it forms the connect URL. return_urls lists the pages of yours a connect link (connect_url + /start?return_to=…) may send a person back to; without one, only the hosted page works.
POST
/oauth-appsAuthorization
AuthorizationBearer token (API key) · headerrequiredPass an AI Inbx API key as a Bearer token.
Request body
requiredapplication/jsonproviderstringrequiredAllowed:
googlemicrosoftnamestringrequiredmin length 1 · max length 100
slugstringrequiredmin length 3 · max length 64
client_idstringrequiredmin length 1 · max length 500
client_secretstringrequiredmin length 1 · max length 2000
tenantstringmin length 1 · max length 128
pubsub_topicstringmin length 1 · max length 256
accentstringmax length 64
taglinestringmax length 200
support_emailstring<email>matches ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
logo_urlstring<uri>max length 2048
return_urlsstring<uri>[]The pages a connect link may return to. Replaced whole on update.
max items 20
Responses
201The OAuth app was created.
idstringrequiredmatches ^[a-z]+_[0-9a-f]{32}$
providerstringrequiredAllowed:
googlemicrosoftnamestringrequiredslugstringrequiredclient_idstringrequiredtenantstring | anyrequiredShow propertiesHide properties
Any of:
string
stringany
anypubsub_topicstring | anyrequiredShow propertiesHide properties
Any of:
string
stringany
anyaccentstring | anyrequiredShow propertiesHide properties
Any of:
string
stringany
anytaglinestring | anyrequiredShow propertiesHide properties
Any of:
string
stringany
anysupport_emailstring<email> | anyrequiredShow propertiesHide properties
Any of:
string<email>
string<email>any
anylogo_urlstring<uri> | anyrequiredA logo linked from the customer's own server. An uploaded one is served from us and is not linkable through the API.
Show propertiesHide properties
Any of:
string<uri>
string<uri>any
anyconnect_urlstring<uri>requiredreturn_urlsstring<uri>[]requiredThe pages a connect link — `connect_url` + `/start?return_to=…` — may return to. Matched on origin and path.
redirect_uristring<uri>requiredpush_endpointstring<uri> | anyrequiredShow propertiesHide properties
Any of:
string<uri>
string<uri>any
anycreated_atstring<date-time>requiredmatches ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
400The request is invalid.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired401The API key is missing or invalid.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired403The API key does not have the required scope.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired404The requested resource does not exist.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired409The request conflicts with the resource's current state.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired413The request body or attachments are too large.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired415The request body is not JSON.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired422The request body failed validation.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired429The organisation's request budget is spent (`too_many_requests`), or an upstream mail provider is throttling (`rate_limited`).
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired500An internal error occurred.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired502An upstream mail provider failed.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired503The service is temporarily unavailable.
typestringrequiredtitlestringrequiredstatusintegerrequiredmin -9007199254740991 · max 9007199254740991
detailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
Array of
objectpathstringrequiredmessagestringrequired