curl --request POST \
--url 'https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"scope": "all",
"page": 1,
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/safari/artifact/gallery/list?app_key="
payload = {
"scope": "all",
"page": 1,
"limit": 20
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({scope: 'all', page: 1, limit: 20})
};
fetch('https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=', 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.flashcat.cloud/safari/artifact/gallery/list?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'scope' => 'all',
'page' => 1,
'limit' => 20
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/safari/artifact/gallery/list?app_key="
payload := strings.NewReader("{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
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.flashcat.cloud/safari/artifact/gallery/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"items": [
{
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析",
"team_id": 2477033058131,
"team_name": "研发团队",
"person_id": 2476444212131,
"creator_name": "yushuangyu",
"is_mine": true,
"can_edit": true,
"session_id": "sess_VCbVPZrq9YoyBu8sNCmqUy",
"session_title": "分析海力士财报并发布报告",
"file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB",
"name": "sk-hynix-q2-2026-report.html",
"size": 18996,
"content_type": "text/html",
"created_at": 1785293373899,
"updated_at": 1785747910219,
"share_enabled": true,
"public_url": "https://console.flashcat.cloud/share/artifact/art_VnfrWic8UbB9q3EfYR4Gmg",
"shared_by": 3790925372131,
"shared_at": 1785747928665,
"share_file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB"
},
{
"artifact_id": "art_CWQzDU2PXSRJvKDhQbuMKu",
"title": "rum_recommendation",
"team_id": 2477033058131,
"team_name": "研发团队",
"person_id": 3790925372131,
"creator_name": "牛伟利",
"is_mine": false,
"can_edit": true,
"session_id": "sess_QXUC9C2PYWP5EE7vETR3UD",
"session_title": "生成 RUM 文档多格式",
"file_id": "pf_Jnc4E5YBcWLGzunB4ntP9s",
"name": "rum_recommendation.pdf",
"size": 137107,
"content_type": "application/pdf",
"created_at": 1785229432881,
"updated_at": 1785741344822
}
],
"total": 17
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}List artifacts
List published artifacts visible to the caller, with pagination and title search.
curl --request POST \
--url 'https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"scope": "all",
"page": 1,
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/safari/artifact/gallery/list?app_key="
payload = {
"scope": "all",
"page": 1,
"limit": 20
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({scope: 'all', page: 1, limit: 20})
};
fetch('https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=', 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.flashcat.cloud/safari/artifact/gallery/list?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'scope' => 'all',
'page' => 1,
'limit' => 20
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/safari/artifact/gallery/list?app_key="
payload := strings.NewReader("{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
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.flashcat.cloud/safari/artifact/gallery/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/artifact/gallery/list?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"scope\": \"all\",\n \"page\": 1,\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"items": [
{
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析",
"team_id": 2477033058131,
"team_name": "研发团队",
"person_id": 2476444212131,
"creator_name": "yushuangyu",
"is_mine": true,
"can_edit": true,
"session_id": "sess_VCbVPZrq9YoyBu8sNCmqUy",
"session_title": "分析海力士财报并发布报告",
"file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB",
"name": "sk-hynix-q2-2026-report.html",
"size": 18996,
"content_type": "text/html",
"created_at": 1785293373899,
"updated_at": 1785747910219,
"share_enabled": true,
"public_url": "https://console.flashcat.cloud/share/artifact/art_VnfrWic8UbB9q3EfYR4Gmg",
"shared_by": 3790925372131,
"shared_at": 1785747928665,
"share_file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB"
},
{
"artifact_id": "art_CWQzDU2PXSRJvKDhQbuMKu",
"title": "rum_recommendation",
"team_id": 2477033058131,
"team_name": "研发团队",
"person_id": 3790925372131,
"creator_name": "牛伟利",
"is_mine": false,
"can_edit": true,
"session_id": "sess_QXUC9C2PYWP5EE7vETR3UD",
"session_title": "生成 RUM 文档多格式",
"file_id": "pf_Jnc4E5YBcWLGzunB4ntP9s",
"name": "rum_recommendation.pdf",
"size": 137107,
"content_type": "application/pdf",
"created_at": 1785229432881,
"updated_at": 1785741344822
}
],
"total": 17
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 1,000 requests/minute; 50 requests/second per account |
| Permissions | None — any valid app_key can call this operation |
Usage
scopeselectsall(default — the caller’s own personal artifacts plus every team the caller belongs to),personal(only the caller’s own), orteam(only team-owned artifacts of the caller’s teams).team_idsnarrows further to specific teams, intersected with the caller’s visibility — teams the caller does not belong to return nothing.- Default sort is
updated_atdescending; setorderbytocreated_atto change the field andasc: trueto flip direction. - For an
app_keycall, visibility is evaluated against the key owner’s identity — the list shows that member’s personal artifacts and their teams’ artifacts.
Authorizations
App key issued from the Flashduty console. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Filter and paginate the artifact gallery.
Visibility scope. all (default) lists the caller's own personal artifacts plus artifacts of every team the caller belongs to; personal lists only the caller's own; team lists only team-owned artifacts of the caller's teams.
all, personal, team Restrict to artifacts owned by these team IDs, intersected with the caller's visibility — teams the caller does not belong to silently return nothing.
Case-insensitive substring match on the artifact title.
Page number, 1-based.
x >= 1Page size. Defaults to 20; capped at 100.
x <= 100Sort field: created_at or updated_at. Empty means updated_at descending.
created_at, updated_at Sort ascending when true, descending when false. Applies only when orderby is set.
Response
Success
Standard response envelope used by every Flashduty public API. On success data contains the endpoint-specific payload and error is absent. On failure error is present and data is absent. request_id is always present and is also mirrored in the Flashcat-Request-Id response header.
Unique ID for this request. Mirrored in the Flashcat-Request-Id header. Include it when reporting issues.
"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
Error payload inside the response envelope. Present only on non-2xx responses.
Show child attributes
Show child attributes
A page of gallery artifacts.
Show child attributes
Show child attributes
Was this page helpful?