Prepare selected photos for sharing
Resolve one currently shareable playlist and one to twelve unique authorized image references. Create or reuse its canonical attributed link, atomically rechecking the selection before commit. Nothing is sent or downloaded. Requires a writable member credential and content access; no member-site cookie, site flag, or opaque widget context is used. Other identities and asset URLs cannot be supplied. No query parameters are accepted. Clients must not persist private asset URLs after membership changes and must handle download or device-sharing failures themselves.
curl --request POST \
--url https://api.fluid.app/api/member/v2026-10/photo-share-preparations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"playlist_id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60",
"media_ids": [
"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61"
]
}
'import requests
url = "https://api.fluid.app/api/member/v2026-10/photo-share-preparations"
payload = {
"playlist_id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60",
"media_ids": ["0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61"]
}
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({
playlist_id: '0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60',
media_ids: ['0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61']
})
};
fetch('https://api.fluid.app/api/member/v2026-10/photo-share-preparations', 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.fluid.app/api/member/v2026-10/photo-share-preparations",
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([
'playlist_id' => '0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60',
'media_ids' => [
'0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61'
]
]),
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://api.fluid.app/api/member/v2026-10/photo-share-preparations"
payload := strings.NewReader("{\n \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\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://api.fluid.app/api/member/v2026-10/photo-share-preparations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/photo-share-preparations")
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 \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"data": {
"share": {
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f62",
"url": "https://primex.fluid.app/s/6f9eab3c"
},
"photos": [
{
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61",
"url": "https://cdn.fluid.app/primex/product-photo.png"
}
]
},
"meta": {
"request_uuid": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f63",
"timestamp": "2026-10-15T18:00:00Z"
}
}{
"status": 201,
"data": {
"share": {
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f62",
"url": "https://primex.fluid.app/s/6f9eab3c"
},
"photos": [
{
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61",
"url": "https://cdn.fluid.app/primex/product-photo.png"
}
]
},
"meta": {
"request_uuid": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f63",
"timestamp": "2026-10-15T18:00:00Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
A member credential in the Authorization: Bearer header: a member
session JWT, a portal JWT whose login is linked to a membership in
that company, or an opaque member token. The credential alone
identifies the member and company.
Body
Response
Existing canonical share and current selected photo addresses.
One non-cacheable photo preparation.
curl --request POST \
--url https://api.fluid.app/api/member/v2026-10/photo-share-preparations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"playlist_id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60",
"media_ids": [
"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61"
]
}
'import requests
url = "https://api.fluid.app/api/member/v2026-10/photo-share-preparations"
payload = {
"playlist_id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60",
"media_ids": ["0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61"]
}
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({
playlist_id: '0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60',
media_ids: ['0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61']
})
};
fetch('https://api.fluid.app/api/member/v2026-10/photo-share-preparations', 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.fluid.app/api/member/v2026-10/photo-share-preparations",
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([
'playlist_id' => '0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60',
'media_ids' => [
'0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61'
]
]),
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://api.fluid.app/api/member/v2026-10/photo-share-preparations"
payload := strings.NewReader("{\n \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\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://api.fluid.app/api/member/v2026-10/photo-share-preparations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/photo-share-preparations")
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 \"playlist_id\": \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f60\",\n \"media_ids\": [\n \"0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"data": {
"share": {
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f62",
"url": "https://primex.fluid.app/s/6f9eab3c"
},
"photos": [
{
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61",
"url": "https://cdn.fluid.app/primex/product-photo.png"
}
]
},
"meta": {
"request_uuid": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f63",
"timestamp": "2026-10-15T18:00:00Z"
}
}{
"status": 201,
"data": {
"share": {
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f62",
"url": "https://primex.fluid.app/s/6f9eab3c"
},
"photos": [
{
"id": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f61",
"url": "https://cdn.fluid.app/primex/product-photo.png"
}
]
},
"meta": {
"request_uuid": "0199a3f2-5c1e-7d4b-9a10-3b2c1d4e5f63",
"timestamp": "2026-10-15T18:00:00Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}