Local storage sessions
curl --request POST \
--url https://api.compose.market/api/local/synapse/session \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'x-session-user-address: <x-session-user-address>' \
--data '
{
"agentWallet": "<string>",
"deviceId": "<string>",
"sessionKeyAddress": "<string>",
"sessionKeyExpiresAt": 123,
"depositAmount": "<string>",
"fileSizeBytes": 123,
"copies": 123
}
'import requests
url = "https://api.compose.market/api/local/synapse/session"
payload = {
"agentWallet": "<string>",
"deviceId": "<string>",
"sessionKeyAddress": "<string>",
"sessionKeyExpiresAt": 123,
"depositAmount": "<string>",
"fileSizeBytes": 123,
"copies": 123
}
headers = {
"Authorization": "<authorization>",
"x-session-user-address": "<x-session-user-address>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: '<authorization>',
'x-session-user-address': '<x-session-user-address>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
agentWallet: '<string>',
deviceId: '<string>',
sessionKeyAddress: '<string>',
sessionKeyExpiresAt: 123,
depositAmount: '<string>',
fileSizeBytes: 123,
copies: 123
})
};
fetch('https://api.compose.market/api/local/synapse/session', 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.compose.market/api/local/synapse/session",
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([
'agentWallet' => '<string>',
'deviceId' => '<string>',
'sessionKeyAddress' => '<string>',
'sessionKeyExpiresAt' => 123,
'depositAmount' => '<string>',
'fileSizeBytes' => 123,
'copies' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"x-session-user-address: <x-session-user-address>"
],
]);
$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.compose.market/api/local/synapse/session"
payload := strings.NewReader("{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("x-session-user-address", "<x-session-user-address>")
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.compose.market/api/local/synapse/session")
.header("Authorization", "<authorization>")
.header("x-session-user-address", "<x-session-user-address>")
.header("Content-Type", "application/json")
.body("{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compose.market/api/local/synapse/session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["x-session-user-address"] = '<x-session-user-address>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}"
response = http.request(request)
puts response.read_bodyMesh
Local storage sessions
Provision local Synapse and Filecoin Pin sessions for active Compose sessions.
POST
/
api
/
local
/
synapse
/
session
Local storage sessions
curl --request POST \
--url https://api.compose.market/api/local/synapse/session \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'x-session-user-address: <x-session-user-address>' \
--data '
{
"agentWallet": "<string>",
"deviceId": "<string>",
"sessionKeyAddress": "<string>",
"sessionKeyExpiresAt": 123,
"depositAmount": "<string>",
"fileSizeBytes": 123,
"copies": 123
}
'import requests
url = "https://api.compose.market/api/local/synapse/session"
payload = {
"agentWallet": "<string>",
"deviceId": "<string>",
"sessionKeyAddress": "<string>",
"sessionKeyExpiresAt": 123,
"depositAmount": "<string>",
"fileSizeBytes": 123,
"copies": 123
}
headers = {
"Authorization": "<authorization>",
"x-session-user-address": "<x-session-user-address>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: '<authorization>',
'x-session-user-address': '<x-session-user-address>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
agentWallet: '<string>',
deviceId: '<string>',
sessionKeyAddress: '<string>',
sessionKeyExpiresAt: 123,
depositAmount: '<string>',
fileSizeBytes: 123,
copies: 123
})
};
fetch('https://api.compose.market/api/local/synapse/session', 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.compose.market/api/local/synapse/session",
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([
'agentWallet' => '<string>',
'deviceId' => '<string>',
'sessionKeyAddress' => '<string>',
'sessionKeyExpiresAt' => 123,
'depositAmount' => '<string>',
'fileSizeBytes' => 123,
'copies' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"x-session-user-address: <x-session-user-address>"
],
]);
$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.compose.market/api/local/synapse/session"
payload := strings.NewReader("{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("x-session-user-address", "<x-session-user-address>")
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.compose.market/api/local/synapse/session")
.header("Authorization", "<authorization>")
.header("x-session-user-address", "<x-session-user-address>")
.header("Content-Type", "application/json")
.body("{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compose.market/api/local/synapse/session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["x-session-user-address"] = '<x-session-user-address>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentWallet\": \"<string>\",\n \"deviceId\": \"<string>\",\n \"sessionKeyAddress\": \"<string>\",\n \"sessionKeyExpiresAt\": 123,\n \"depositAmount\": \"<string>\",\n \"fileSizeBytes\": 123,\n \"copies\": 123\n}"
response = http.request(request)
puts response.read_bodyStorage routes are POST-only and require a valid active session Compose Key.
Routes
| Method | Path | Description |
|---|---|---|
POST | /api/local/synapse/session | Ensures a local Synapse storage session. |
POST | /api/local/filecoin-pin/session | Ensures a local Filecoin Pin session. |
Common body
string
required
Agent wallet address.
string
required
Local device ID.
string
required
Session key wallet address.
number
required
Requested expiry timestamp. The route caps it to the active session expiry.
string
Synapse deposit amount as a non-negative integer string.
number
Required by
/api/local/filecoin-pin/session.number
Optional Filecoin Pin copy count. Defaults to
2.Headers
string
required
Bearer compose-... for the active session key.string
required
Wallet address that owns the active session.
number
Chain ID. Defaults to the active chain when omitted.
⌘I