curl --request POST \
--url 'https://api.flashcat.cloud/safari/artifact/gallery/update?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析(终稿)"
}
'import requests
url = "https://api.flashcat.cloud/safari/artifact/gallery/update?app_key="
payload = {
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析(终稿)"
}
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({artifact_id: 'art_VnfrWic8UbB9q3EfYR4Gmg', title: 'SK 海力士 2026 Q2 财报深度分析(终稿)'})
};
fetch('https://api.flashcat.cloud/safari/artifact/gallery/update?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/update?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([
'artifact_id' => 'art_VnfrWic8UbB9q3EfYR4Gmg',
'title' => 'SK 海力士 2026 Q2 财报深度分析(终稿)'
]),
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/update?app_key="
payload := strings.NewReader("{\n \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\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/update?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/artifact/gallery/update?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 \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"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": 1785829000000,
"share_enabled": true,
"public_url": "https://console.flashcat.cloud/share/artifact/art_VnfrWic8UbB9q3EfYR4Gmg",
"shared_by": 3790925372131,
"shared_at": 1785747928665,
"share_file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB"
}
}{
"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."
}
}Update artifact
Rename an artifact or transfer it between personal and team scope.
curl --request POST \
--url 'https://api.flashcat.cloud/safari/artifact/gallery/update?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析(终稿)"
}
'import requests
url = "https://api.flashcat.cloud/safari/artifact/gallery/update?app_key="
payload = {
"artifact_id": "art_VnfrWic8UbB9q3EfYR4Gmg",
"title": "SK 海力士 2026 Q2 财报深度分析(终稿)"
}
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({artifact_id: 'art_VnfrWic8UbB9q3EfYR4Gmg', title: 'SK 海力士 2026 Q2 财报深度分析(终稿)'})
};
fetch('https://api.flashcat.cloud/safari/artifact/gallery/update?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/update?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([
'artifact_id' => 'art_VnfrWic8UbB9q3EfYR4Gmg',
'title' => 'SK 海力士 2026 Q2 财报深度分析(终稿)'
]),
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/update?app_key="
payload := strings.NewReader("{\n \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\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/update?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/artifact/gallery/update?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 \"artifact_id\": \"art_VnfrWic8UbB9q3EfYR4Gmg\",\n \"title\": \"SK 海力士 2026 Q2 财报深度分析(终稿)\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"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": 1785829000000,
"share_enabled": true,
"public_url": "https://console.flashcat.cloud/share/artifact/art_VnfrWic8UbB9q3EfYR4Gmg",
"shared_by": 3790925372131,
"shared_at": 1785747928665,
"share_file_id": "pf_SdhEA5fbZJGnHzwrNJMMSB"
}
}{
"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 | 300 requests/minute; 20 requests/second per account |
| Permissions | None — any valid app_key can call this operation |
Usage
- Only the provided fields change — omit
titleorteam_idto leave them unchanged. team_id: 0moves the artifact to personal scope (only the creator can manage it); a positiveteam_idrequires the caller (forapp_keycalls, the key owner) to be a member of that team.- Returns the full artifact after the update.
- Every call is recorded in the account audit log.
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
Partial update of a gallery artifact. Only provided fields change.
Artifact ID (art_ prefix). Also the key of the public-share link.
New title. Trimmed; must be non-empty when provided. Omit to leave unchanged.
Transfer target scope. 0 moves the artifact to personal scope (only the creator can manage it); a positive value moves it to a team the caller must belong to. Omit to leave unchanged.
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
One published artifact in the gallery. Time fields are Unix timestamps in milliseconds.
Show child attributes
Show child attributes
Was this page helpful?