Robot actions
End an episode
Ends the episode now instead of at its 60-second idle expiry. Not billed. ended is
false when the episode was already gone: unknown, expired, ended before, or another
account’s.
POST
/
v1
/
end_session
End an episode
curl --request POST \
--url https://api.abstract.inc/v1/end_session \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "allenai/molmoact2",
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
'import requests
url = "https://api.abstract.inc/v1/end_session"
payload = {
"model": "allenai/molmoact2",
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": {
"code": "ok",
"reason": null,
"retryable": false,
"retry_after_s": null
},
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"ended": true
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}Authorizations
Headers
The API version your client was written for. 2026-10-27 is the only version. Without this header the request is answered under the newest version; a version the API does not answer is refused with 400 unsupported_api_version before anything runs.
Available options:
2026-10-27 Body
application/json
⌘I
End an episode
curl --request POST \
--url https://api.abstract.inc/v1/end_session \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "allenai/molmoact2",
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
'import requests
url = "https://api.abstract.inc/v1/end_session"
payload = {
"model": "allenai/molmoact2",
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": {
"code": "ok",
"reason": null,
"retryable": false,
"retry_after_s": null
},
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"ended": true
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}{
"status": {
"code": "model_overloaded",
"reason": "The runtime admission is full.",
"retryable": true,
"retry_after_s": 1
}
}