List Skill proposals
curl --request GET \
--url https://api.checkfu.com/v1/skill-proposals \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/skill-proposals"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/skill-proposals', 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.checkfu.com/v1/skill-proposals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/skill-proposals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
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.get("https://api.checkfu.com/v1/skill-proposals")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/skill-proposals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"status": "authoring",
"source_session_ids": [
"<string>"
],
"agent": "<string>",
"model_routing_profile_key": "<string>",
"instructions": "<string>",
"skill": {
"name": "<string>",
"description": "<string>",
"kind": "instructional",
"entry": "<string>",
"content_sha256": "<string>"
},
"verification_material": {
"task": "<string>",
"rubric": "<string>"
},
"verifications": [
{
"session": "<string>",
"started_at": "<string>",
"result": {
"verdict": "satisfied",
"explanation": "<string>",
"cost_tokens": 1,
"completed_at": "<string>"
},
"source_version": 1,
"principal": "<string>",
"launched_at": "<string>"
}
],
"submission": {
"skill_source": "<string>",
"branch": "<string>",
"commit_sha": "<string>",
"submitted_at": "<string>"
},
"adoption": {
"skill_id": "<string>",
"skill_version": 1,
"observed_at": "<string>"
},
"error": "input_session_unavailable",
"usage": {
"input_tokens": 1,
"cached_input_tokens": 1,
"cache_write_input_tokens": 1,
"output_tokens": 1,
"reasoning_output_tokens": 1,
"total_tokens": 1
},
"created_at": "<string>",
"updated_at": "<string>",
"version": 1,
"submission_attempt": {
"source_version": 1,
"skill_source": "<string>",
"acted_as": "<string>",
"branch": "<string>",
"base_commit_sha": "<string>",
"base_content_sha256": "<string>",
"expected_base_digest": "<string>",
"prepared_commit_sha": "<string>",
"started_at": "<string>"
}
}
],
"next_page": "<string>"
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}List Skill proposals
List SkillProposal improvement jobs in the selected Workspace. Each row carries its lifecycle status (authoring, drafted, verifying, verified, submitting, submitted, discarded, and their failure states), the source Sessions it was authored from, the originating Agent, and the exact authoring model usage. submitting is a durable repository-operation reservation: inspect submission_attempt to resume it, or discard it only while no prepared commit exists.
Checkfu support posture: alpha; hosted. Required evidence journey: skill-delivery. Deployment-specific readiness and the latest proven release are available from GET /v1/support/capabilities.
GET
/
v1
/
skill-proposals
List Skill proposals
curl --request GET \
--url https://api.checkfu.com/v1/skill-proposals \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/skill-proposals"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/skill-proposals', 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.checkfu.com/v1/skill-proposals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/skill-proposals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
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.get("https://api.checkfu.com/v1/skill-proposals")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/skill-proposals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"status": "authoring",
"source_session_ids": [
"<string>"
],
"agent": "<string>",
"model_routing_profile_key": "<string>",
"instructions": "<string>",
"skill": {
"name": "<string>",
"description": "<string>",
"kind": "instructional",
"entry": "<string>",
"content_sha256": "<string>"
},
"verification_material": {
"task": "<string>",
"rubric": "<string>"
},
"verifications": [
{
"session": "<string>",
"started_at": "<string>",
"result": {
"verdict": "satisfied",
"explanation": "<string>",
"cost_tokens": 1,
"completed_at": "<string>"
},
"source_version": 1,
"principal": "<string>",
"launched_at": "<string>"
}
],
"submission": {
"skill_source": "<string>",
"branch": "<string>",
"commit_sha": "<string>",
"submitted_at": "<string>"
},
"adoption": {
"skill_id": "<string>",
"skill_version": 1,
"observed_at": "<string>"
},
"error": "input_session_unavailable",
"usage": {
"input_tokens": 1,
"cached_input_tokens": 1,
"cache_write_input_tokens": 1,
"output_tokens": 1,
"reasoning_output_tokens": 1,
"total_tokens": 1
},
"created_at": "<string>",
"updated_at": "<string>",
"version": 1,
"submission_attempt": {
"source_version": 1,
"skill_source": "<string>",
"acted_as": "<string>",
"branch": "<string>",
"base_commit_sha": "<string>",
"base_content_sha256": "<string>",
"expected_base_digest": "<string>",
"prepared_commit_sha": "<string>",
"started_at": "<string>"
}
}
],
"next_page": "<string>"
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Available options:
2026-08-27 Query Parameters
Required range:
x >= 1Pattern:
^c1_[0-9a-z]+$Available options:
asc, desc