Subscriptions
List owned subscription discount history
Read active and removed attachments in descending creation and internal-ID order with bounded cursor pagination. Ownership comes only from the bearer. Responses are private and must be revalidated; no state changes or customer provisioning occur.
GET
/
api
/
member
/
v2026-10
/
subscriptions
/
{id}
/
discounts
List owned subscription discount history
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts', 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/subscriptions/{id}/discounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"data": [
{
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0de",
"subscription_id": "019a23a4-9211-71bf-8fa5-a5f31a82a0df",
"currency": "USD",
"discount": {
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0e0",
"code": "WELCOME10"
},
"discount_version": {
"version_number": 1,
"code": "WELCOME10",
"price_discount_type": "percentage",
"flat_value": null,
"percentage_value": "10.0",
"apply_to_volume": false
},
"duration": "forever",
"duration_cycles": null,
"applied_cycles": 0,
"starts_at": "2026-10-01T12:00:00Z",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-01T12:00:00Z",
"removed_at": null,
"removed_reason": null,
"removed_detail": null,
"notes": null,
"attached_via": "manual_member",
"attached_by": {
"kind": "member",
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0e1",
"label": "Riley Kim"
}
}
],
"meta": {
"request_uuid": "019a23a4-9211-71bf-8fa5-a5f31a82a0de",
"timestamp": "2026-10-01T12:00:00Z",
"pagination": {
"next_cursor": null
}
}
}{
"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.
Path Parameters
Public UUID of an owned subscription.
Query Parameters
Maximum attachments returned, from 1 through 100.
Required range:
1 <= x <= 100Encrypted continuation cursor from this member and subscription; expires after three days.
Response
Discount attachment history for the owned subscription.
⌘I
List owned subscription discount history
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts', 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/subscriptions/{id}/discounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/subscriptions/{id}/discounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"data": [
{
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0de",
"subscription_id": "019a23a4-9211-71bf-8fa5-a5f31a82a0df",
"currency": "USD",
"discount": {
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0e0",
"code": "WELCOME10"
},
"discount_version": {
"version_number": 1,
"code": "WELCOME10",
"price_discount_type": "percentage",
"flat_value": null,
"percentage_value": "10.0",
"apply_to_volume": false
},
"duration": "forever",
"duration_cycles": null,
"applied_cycles": 0,
"starts_at": "2026-10-01T12:00:00Z",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-01T12:00:00Z",
"removed_at": null,
"removed_reason": null,
"removed_detail": null,
"notes": null,
"attached_via": "manual_member",
"attached_by": {
"kind": "member",
"id": "019a23a4-9211-71bf-8fa5-a5f31a82a0e1",
"label": "Riley Kim"
}
}
],
"meta": {
"request_uuid": "019a23a4-9211-71bf-8fa5-a5f31a82a0de",
"timestamp": "2026-10-01T12:00:00Z",
"pagination": {
"next_cursor": null
}
}
}{
"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"
}
}