上传知识文件
curl --request POST \
--url 'https://api.flashcat.cloud/safari/knowledge/file/put?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"rel_path": "tmp/openapi-example.md",
"content_b64": "IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=",
"content_type": "text/markdown"
}
'import requests
url = "https://api.flashcat.cloud/safari/knowledge/file/put?app_key="
payload = {
"rel_path": "tmp/openapi-example.md",
"content_b64": "IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=",
"content_type": "text/markdown"
}
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({
rel_path: 'tmp/openapi-example.md',
content_b64: 'IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=',
content_type: 'text/markdown'
})
};
fetch('https://api.flashcat.cloud/safari/knowledge/file/put?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/knowledge/file/put?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([
'rel_path' => 'tmp/openapi-example.md',
'content_b64' => 'IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=',
'content_type' => 'text/markdown'
]),
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/knowledge/file/put?app_key="
payload := strings.NewReader("{\n \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\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/knowledge/file/put?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/knowledge/file/put?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 \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"file": {
"file_id": "kfl_gctXKRG45aFQGgxSFr59WY",
"pack_id": "kpk_kE49k3FhecfJBwutbshEEc",
"rel_path": "tmp/openapi-example.md",
"content_type": "text/markdown",
"size_bytes": 50,
"checksum": "a0775f9b3f392cd0560b21ad2f579ae4a5d6b1282b9eb145688ba2de717a816d",
"updated_by": 2476444212131,
"updated_at_ms": 1786458764961
}
}
}{
"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": "AccessDenied",
"message": "Access Denied."
}
}{
"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."
}
}知识
上传知识文件
以 Base64 编码的内容在知识包中创建或覆盖文件。
POST
/
safari
/
knowledge
/
file
/
put
上传知识文件
curl --request POST \
--url 'https://api.flashcat.cloud/safari/knowledge/file/put?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"rel_path": "tmp/openapi-example.md",
"content_b64": "IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=",
"content_type": "text/markdown"
}
'import requests
url = "https://api.flashcat.cloud/safari/knowledge/file/put?app_key="
payload = {
"rel_path": "tmp/openapi-example.md",
"content_b64": "IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=",
"content_type": "text/markdown"
}
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({
rel_path: 'tmp/openapi-example.md',
content_b64: 'IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=',
content_type: 'text/markdown'
})
};
fetch('https://api.flashcat.cloud/safari/knowledge/file/put?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/knowledge/file/put?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([
'rel_path' => 'tmp/openapi-example.md',
'content_b64' => 'IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=',
'content_type' => 'text/markdown'
]),
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/knowledge/file/put?app_key="
payload := strings.NewReader("{\n \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\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/knowledge/file/put?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/knowledge/file/put?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 \"rel_path\": \"tmp/openapi-example.md\",\n \"content_b64\": \"IyBPcGVuQVBJIGV4YW1wbGUKVGVtcCBmaWxlIGZvciBBUEkgZG9jcyBleGFtcGxlLgo=\",\n \"content_type\": \"text/markdown\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"file": {
"file_id": "kfl_gctXKRG45aFQGgxSFr59WY",
"pack_id": "kpk_kE49k3FhecfJBwutbshEEc",
"rel_path": "tmp/openapi-example.md",
"content_type": "text/markdown",
"size_bytes": 50,
"checksum": "a0775f9b3f392cd0560b21ad2f579ae4a5d6b1282b9eb145688ba2de717a816d",
"updated_by": 2476444212131,
"updated_at_ms": 1786458764961
}
}
}{
"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": "AccessDenied",
"message": "Access Denied."
}
}{
"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."
}
}限制说明
| 项目 | 说明 |
|---|---|
| 速率限制 | 每个 app_key 300 次/分钟;20 次/秒 |
| 权限要求 | 知识库管理(ai-sre) |
使用说明
- 文件内容以 JSON 字段
content_b64中的 Base64 文本上传——不是 multipart 上传。 - 写入已存在的
rel_path会覆盖原文件;content_type留空时按扩展名推断(.md→text/markdown)。 - 内容解码后必须是合法的 UTF-8 文本,二进制内容会被拒绝并返回
InvalidParameter。 - 编辑账户范围知识包需要账户 Owner/Admin 权限;编辑团队知识包需要是该团队成员。
- 每次调用都会记录到账户审计日志。
授权
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.
请求体
application/json
响应
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
写入的文件及非阻塞提示。
Show child attributes
Show child attributes
此页面对您有帮助吗?
⌘I