Create Signed Upload URL
curl --request POST \
--url https://uploads.pinata.cloud/v3/files/sign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date": 123,
"expires": 123,
"max_file_size": 123,
"allow_mime_types": [
"<string>"
],
"group_id": "<string>",
"keyvalues": {},
"filename": "<string>"
}
'import requests
url = "https://uploads.pinata.cloud/v3/files/sign"
payload = {
"date": 123,
"expires": 123,
"max_file_size": 123,
"allow_mime_types": ["<string>"],
"group_id": "<string>",
"keyvalues": {},
"filename": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: 123,
expires: 123,
max_file_size: 123,
allow_mime_types: ['<string>'],
group_id: '<string>',
keyvalues: {},
filename: '<string>'
})
};
fetch('https://uploads.pinata.cloud/v3/files/sign', 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://uploads.pinata.cloud/v3/files/sign",
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([
'date' => 123,
'expires' => 123,
'max_file_size' => 123,
'allow_mime_types' => [
'<string>'
],
'group_id' => '<string>',
'keyvalues' => [
],
'filename' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://uploads.pinata.cloud/v3/files/sign"
payload := strings.NewReader("{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://uploads.pinata.cloud/v3/files/sign")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://uploads.pinata.cloud/v3/files/sign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": "<string>"
}Uploads
Create Signed Upload URL
org:files:write
POST
/
files
/
sign
Create Signed Upload URL
curl --request POST \
--url https://uploads.pinata.cloud/v3/files/sign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date": 123,
"expires": 123,
"max_file_size": 123,
"allow_mime_types": [
"<string>"
],
"group_id": "<string>",
"keyvalues": {},
"filename": "<string>"
}
'import requests
url = "https://uploads.pinata.cloud/v3/files/sign"
payload = {
"date": 123,
"expires": 123,
"max_file_size": 123,
"allow_mime_types": ["<string>"],
"group_id": "<string>",
"keyvalues": {},
"filename": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: 123,
expires: 123,
max_file_size: 123,
allow_mime_types: ['<string>'],
group_id: '<string>',
keyvalues: {},
filename: '<string>'
})
};
fetch('https://uploads.pinata.cloud/v3/files/sign', 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://uploads.pinata.cloud/v3/files/sign",
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([
'date' => 123,
'expires' => 123,
'max_file_size' => 123,
'allow_mime_types' => [
'<string>'
],
'group_id' => '<string>',
'keyvalues' => [
],
'filename' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://uploads.pinata.cloud/v3/files/sign"
payload := strings.NewReader("{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://uploads.pinata.cloud/v3/files/sign")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://uploads.pinata.cloud/v3/files/sign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": 123,\n \"expires\": 123,\n \"max_file_size\": 123,\n \"allow_mime_types\": [\n \"<string>\"\n ],\n \"group_id\": \"<string>\",\n \"keyvalues\": {},\n \"filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
The unix timestamp that the URL is signed, ie time of request
How long the URL is valid for in sconds after signing based on the date parameter
Restrict the max size of a file upload in bytes
Array of allowed mime types for a file upload, includes wildcards "image/*"
ID of the group that the file will be uploaded to
Add additional key value metadata to files upon upload
Show child attributes
Show child attributes
Name of the file that will be uploaded
Response
200 - application/json
Successful response
⌘I