curl --request GET \
--url https://three.arcprize.org/api/scorecard/{card_id}/{game_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://three.arcprize.org/api/scorecard/{card_id}/{game_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://three.arcprize.org/api/scorecard/{card_id}/{game_id}', 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://three.arcprize.org/api/scorecard/{card_id}/{game_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://three.arcprize.org/api/scorecard/{card_id}/{game_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://three.arcprize.org/api/scorecard/{card_id}/{game_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://three.arcprize.org/api/scorecard/{card_id}/{game_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"card_id": "8ae52f21-b40c-457b-9f4e-65bd8381e67f",
"score": 100,
"source_url": "https://sandbox.internal.arc-prize.com",
"tags": [
"human"
],
"user_name": "distracted_poincare",
"user_id": "102214435702678430912@google",
"open_at": "2026-01-26T23:34:18.213873Z",
"last_update": "2026-01-26T23:34:53.229182Z",
"total_environments_completed": 1,
"total_environments": 1,
"total_levels_completed": 5,
"total_levels": 5,
"total_actions": 136,
"environments": [
{
"id": "ft09-1d57d6daeb05",
"runs": [
{
"id": "ft09-1d57d6daeb05",
"guid": "66fe6b58-adf8-45b1-ac73-70ed486e22d0",
"score": 3,
"levels_completed": 2,
"actions": 478,
"resets": 0,
"state": "WIN",
"completed": true,
"level_scores": [
1,
2
],
"level_actions": [
171,
307
],
"level_baseline_actions": [
200,
250
],
"number_of_levels": 5,
"number_of_environments": 1
}
],
"score": 3,
"actions": 478,
"levels_completed": 2,
"completed": true,
"level_count": 5,
"resets": 0
}
],
"tags_scores": []
}Retrieve scorecard (one game)
Returns the scorecard statistics limited to a single environment.
Only the entry matching game_id is present in environments; all
top-level counters are recomputed for that environment alone.
Useful for dashboards that present per-game progress without fetching the full scorecard payload.
curl --request GET \
--url https://three.arcprize.org/api/scorecard/{card_id}/{game_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://three.arcprize.org/api/scorecard/{card_id}/{game_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://three.arcprize.org/api/scorecard/{card_id}/{game_id}', 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://three.arcprize.org/api/scorecard/{card_id}/{game_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://three.arcprize.org/api/scorecard/{card_id}/{game_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://three.arcprize.org/api/scorecard/{card_id}/{game_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://three.arcprize.org/api/scorecard/{card_id}/{game_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"card_id": "8ae52f21-b40c-457b-9f4e-65bd8381e67f",
"score": 100,
"source_url": "https://sandbox.internal.arc-prize.com",
"tags": [
"human"
],
"user_name": "distracted_poincare",
"user_id": "102214435702678430912@google",
"open_at": "2026-01-26T23:34:18.213873Z",
"last_update": "2026-01-26T23:34:53.229182Z",
"total_environments_completed": 1,
"total_environments": 1,
"total_levels_completed": 5,
"total_levels": 5,
"total_actions": 136,
"environments": [
{
"id": "ft09-1d57d6daeb05",
"runs": [
{
"id": "ft09-1d57d6daeb05",
"guid": "66fe6b58-adf8-45b1-ac73-70ed486e22d0",
"score": 3,
"levels_completed": 2,
"actions": 478,
"resets": 0,
"state": "WIN",
"completed": true,
"level_scores": [
1,
2
],
"level_actions": [
171,
307
],
"level_baseline_actions": [
200,
250
],
"number_of_levels": 5,
"number_of_environments": 1
}
],
"score": 3,
"actions": 478,
"levels_completed": 2,
"completed": true,
"level_count": 5,
"resets": 0
}
],
"tags_scores": []
}Authorizations
Path Parameters
Identifier returned by /scorecard/open.
Game identifier to filter by (e.g. ls20-1d57d6daeb05).
Response
scorecard found; statistics for the requested game.
Aggregate results for an entire scorecard run.
Returned when closing a scorecard or when retrieving a scorecard (open or closed).
Includes cumulative totals, optional metadata echoed from the open request
(e.g. source_url, tags, opaque), user identity (user_name, user_id),
timestamps (open_at, last_update, published_at), and a per-environment
breakdown in environments. The tags_scores array provides per-tag aggregates
for runs that were tagged.
The scorecard ID returned by OpenScorecardResponse.
Average of the best per-environment scores in this scorecard.
Per-environment breakdown; each entry is one game/environment with its runs.
Show child attributes
Show child attributes
Number of environments with at least one run that reached WIN.
Total number of environments in this scorecard.
Sum of the highest completed-level count for each environment.
Total number of levels across all environments.
Number of actions taken across all recorded runs.
Link originally supplied in the OpenScorecardRequest.
Arbitrary labels echoed back from the open request.
Display name of the user who opened/ran this scorecard.
Stable identifier of the user (e.g. provider subject id).
When the scorecard was closed/published (absent if still open).
JSON value (≤ 16 KB) exactly as provided when the scorecard was opened. Absent if none was supplied.
Per-tag aggregate statistics for runs that were tagged.
Show child attributes
Show child attributes
Whether competition restrictions apply to this scorecard.
When the scorecard was opened.
When the scorecard was last updated (e.g. last action or close).
Was this page helpful?

