文件上传接口
curl --request POST \
--url https://geekai.co/api/v1/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form purpose=file-url \
--form format=textimport requests
url = "https://geekai.co/api/v1/files"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"purpose": "file-url",
"format": "text"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '@/E:/文档/test.pdf');
form.append('purpose', 'file-url');
form.append('format', 'text');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://geekai.co/api/v1/files', 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://geekai.co/api/v1/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://geekai.co/api/v1/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://geekai.co/api/v1/files")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://geekai.co/api/v1/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"size": 123,
"type": "<string>",
"md5": "<string>",
"url": "<string>",
"content": "<string>"
}{
"code": "invalid_file",
"message": "不支持的文件格式"
}{
"code": "unauthorized",
"message": "Invalid API key or token"
}{
"code": "file_too_large",
"message": "文件大小超过50MB限制"
}{
"code": "unsupported_media_type",
"message": "不支持的文件类型"
}{
"code": "invalid_request",
"message": "请求参数不合法"
}File
Upload File
POST
/
files
文件上传接口
curl --request POST \
--url https://geekai.co/api/v1/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form purpose=file-url \
--form format=textimport requests
url = "https://geekai.co/api/v1/files"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"purpose": "file-url",
"format": "text"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '@/E:/文档/test.pdf');
form.append('purpose', 'file-url');
form.append('format', 'text');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://geekai.co/api/v1/files', 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://geekai.co/api/v1/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://geekai.co/api/v1/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://geekai.co/api/v1/files")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://geekai.co/api/v1/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/E:/文档/test.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nfile-url\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"size": 123,
"type": "<string>",
"md5": "<string>",
"url": "<string>",
"content": "<string>"
}{
"code": "invalid_file",
"message": "不支持的文件格式"
}{
"code": "unauthorized",
"message": "Invalid API key or token"
}{
"code": "file_too_large",
"message": "文件大小超过50MB限制"
}{
"code": "unsupported_media_type",
"message": "不支持的文件类型"
}{
"code": "invalid_request",
"message": "请求参数不合法"
}GeekAI provides file upload and content extraction capabilities, supporting various file formats, including images, audio, video, and documents (PDF/Office/plain text). You can upload files to be recognized through the file upload interface, and then obtain the file content through the file content extraction interface. With this basic service, you can implement higher-level business scenarios such as AI file conversation/RAG.
cURL Request Example
curl --location --request POST 'https://geekai.dev/api/v1/files' \
--header 'Authorization: Bearer {YOUR_GEEKAI_API_KEY}' \
--form 'file=@"/E:/Documents/geekai/test.pdf"'
Authorizations
bearerAuthapiKeyAuth
API认证token
Body
multipart/form-data
Response
成功响应
文件唯一ID,可通过该ID获取文件内容
文件状态: pending(待处理)/reading(读取中)/failed(读取失败)/done(已读取)
Available options:
pending, reading, processing, failed, done 文件名称
文件大小
文件MIME类型
文件MD5值
文件URL地址
文件内容(只有status=done时,才会填充该字段)
Was this page helpful?
⌘I
