Générer des URL de téléversement présignées
curl --request POST \
--url https://api.so-me.studio/v1/media/presign-upload \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"files": [
{
"filename": "<string>",
"mimetype": "<string>",
"size": 123
}
],
"folderId": "<string>"
}
'import requests
url = "https://api.so-me.studio/v1/media/presign-upload"
payload = {
"files": [
{
"filename": "<string>",
"mimetype": "<string>",
"size": 123
}
],
"folderId": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
files: [{filename: '<string>', mimetype: '<string>', size: 123}],
folderId: '<string>'
})
};
fetch('https://api.so-me.studio/v1/media/presign-upload', 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.so-me.studio/v1/media/presign-upload",
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([
'files' => [
[
'filename' => '<string>',
'mimetype' => '<string>',
'size' => 123
]
],
'folderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.so-me.studio/v1/media/presign-upload"
payload := strings.NewReader("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.so-me.studio/v1/media/presign-upload")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.so-me.studio/v1/media/presign-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"fileId": "<string>",
"uploadUrl": "<string>",
"fileSrc": "<string>",
"s3Key": "<string>"
}
]Media
Générer des URL de téléversement présignées
Réserve des fichiers de la médiathèque et renvoie une URL S3 présignée pour chacun. Téléversez chaque fichier avec une requête HTTP PUT vers son uploadUrl, avec un en-tête Content-Type égal au mimetype que vous avez déclaré pour ce fichier (par exemple Content-Type: video/mp4). L’URL est signée avec cet en-tête : un PUT sans lui, ou avec une autre valeur, échoue avec une erreur 403 SignatureDoesNotMatch. Les types HTML, SVG, XML, script et inconnus sont refusés avec une erreur 400.
POST
/
v1
/
media
/
presign-upload
Générer des URL de téléversement présignées
curl --request POST \
--url https://api.so-me.studio/v1/media/presign-upload \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"files": [
{
"filename": "<string>",
"mimetype": "<string>",
"size": 123
}
],
"folderId": "<string>"
}
'import requests
url = "https://api.so-me.studio/v1/media/presign-upload"
payload = {
"files": [
{
"filename": "<string>",
"mimetype": "<string>",
"size": 123
}
],
"folderId": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
files: [{filename: '<string>', mimetype: '<string>', size: 123}],
folderId: '<string>'
})
};
fetch('https://api.so-me.studio/v1/media/presign-upload', 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.so-me.studio/v1/media/presign-upload",
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([
'files' => [
[
'filename' => '<string>',
'mimetype' => '<string>',
'size' => 123
]
],
'folderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.so-me.studio/v1/media/presign-upload"
payload := strings.NewReader("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.so-me.studio/v1/media/presign-upload")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.so-me.studio/v1/media/presign-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"mimetype\": \"<string>\",\n \"size\": 123\n }\n ],\n \"folderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"fileId": "<string>",
"uploadUrl": "<string>",
"fileSrc": "<string>",
"s3Key": "<string>"
}
]Autorisations
Corps
application/json