curl --request POST \
--url https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"connected": true,
"authentication": {
"status": "accepted",
"scope": "saved_credential",
"reason": "not_connected"
},
"capacity": {
"status": "available",
"scope": "paid_key_budget",
"reason": "not_connected"
},
"inference": "not_tested",
"observed_at": "2023-11-07T05:31:56Z"
}{
"error": "prompt_required"
}{
"error": "unauthorized"
}{
"error": "missing_scope",
"required_scope": "sessions:read"
}Check a saved provider account
Requires org:write and workspace owner/admin membership. Accepts ordinary API keys as well as user OAuth grants. Checks the exact saved account using provider metadata only, without paid inference calls. Reports saved connection presence, authentication evidence, and capacity separately. Accepted metadata authentication or available capacity does not establish model access or inference success. Missing accounts return connected=false; unavailable storage returns connected=null. Does not persist a health verdict.
Scope:org:writecurl --request POST \
--url https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reasonmachines.ai/v3/organizations/{orgId}/provider-credentials/{providerId}/accounts/{accountKey}/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"connected": true,
"authentication": {
"status": "accepted",
"scope": "saved_credential",
"reason": "not_connected"
},
"capacity": {
"status": "available",
"scope": "paid_key_budget",
"reason": "not_connected"
},
"inference": "not_tested",
"observed_at": "2023-11-07T05:31:56Z"
}{
"error": "prompt_required"
}{
"error": "unauthorized"
}{
"error": "missing_scope",
"required_scope": "sessions:read"
}Authorizations
Your Reason API key from Settings > API. New keys use reason_; legacy ara_ keys remain accepted. Keys are capability-scoped: run, mcp:read, mcp:write, secrets:read, secrets:write, sessions:read, sessions:debug, knowledge:read, memory:read, memory:write, skills:read, skills:write, repos:read, repos:write, reviews:read, reviews:write, deployment:read, analytics:read, org:read, org:write, attachments:read, attachments:write, guardrails:read, guardrails:write, automations:read, automations:write, agent_auth:read. mcp:write manages MCP server configuration only; it does not authorize remote MCP-tool execution. sessions:debug is privileged: it expands diagnostic session events only for organization owners/admins.
Path Parameters
Organization id or slug. Resolve it with GET /v3/self.
The provider identifier (e.g. openai, anthropic, google, deepseek).
The exact saved provider account slot identifier. URL-encode this path segment.
1 - 512Response
Point-in-time metadata evidence; inference is not tested.
Saved credential presence, not validity. Null means storage could not be inspected.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
No model execution occurred. Metadata checks do not establish inference access.
"not_tested"
