Turn a sign-in request down
This page needs your own installation with an Embed license.
POST/
Turns an AI app’s sign-in request down.
Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. Call it from your server only.
Parameters
Path
requestIdRequired · stringThe request’s ID: the
gr_requestparameter on the address the person arrived at.
Body
Optional.
reasonOptional · stringcancelled(the default),not_member,not_allowedorrole, such as to keep viewers out.
When to turn it down
When the person pressed Cancel, doesn’t belong to the account, or you refuse them. Viewers and operators may connect otherwise, read only and read and run. Once per request; audited embed.oauth.denied.
Responses
- 200OK
Send the browser to
continueUrlwith a 303: the app is told it wasn’t allowed. reasonisn’t one of the four.No such request, or it expired.
It was already answered. It carries
details.continueUrl: send the browser there so the AI app is told.Something failed on the installation’s side. Try again.
Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 429 RATE_LIMITED · 503 BUSY. See Errors.
Request
GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY" # gre_…
REQUEST_ID="q7Kd2mXr9TfL0aZc3vBn8wYe" # gr_request from the address
URL="$GORUNNER/api/embed/v1/oauth-requests/"
URL="${URL}$REQUEST_ID/deny"
curl -X POST "$URL" \
-H "Authorization: Bearer $GORUNNER_EMBED_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "not_member"
}'const GORUNNER = "https://automations.example.com";
const KEY = process.env.GORUNNER_EMBED_KEY; // gre_…
const REQUEST_ID = encodeURIComponent("q7Kd2mXr9TfL0aZc3vBn8wYe");
const res = await fetch(
`${GORUNNER}/api/embed/v1/oauth-requests/` +
`${REQUEST_ID}/deny`,
{
method: "POST",
headers: {
Authorization: `Bearer ${KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ reason: "not_member" }),
},
);
const { data } = await res.json();import os, requests
from urllib.parse import quote
GORUNNER = "https://automations.example.com"
KEY = os.environ["GORUNNER_EMBED_KEY"] # gre_…
REQUEST_ID = quote("q7Kd2mXr9TfL0aZc3vBn8wYe", safe="")
res = requests.post(
f"{GORUNNER}/api/embed/v1/oauth-requests/"
f"{REQUEST_ID}/deny",
headers={"Authorization": f"Bearer {KEY}"},
json={"reason": "not_member"},
)
data = res.json()["data"]Response · 200 OK
{
"data": {
"continueUrl": "https://automations.example.com/api/embed/oauth/return?request=q7Kd2mXr9TfL0aZc3vBn8wYe&ticket=…"
}
}Every field
Body
reasonOptional · stringOne of
not_member,not_allowed,role,cancelled. Defaultcancelled.
Response · 200 OK
dataobjectcontinueUrlURL