List Subscriptions
curl --request GET \
--url https://api.flowiq.live/v1/subscriptions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/subscriptions', 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.flowiq.live/v1/subscriptions",
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.flowiq.live/v1/subscriptions"
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.flowiq.live/v1/subscriptions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/subscriptions")
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{
"organization_id": "a4234f32-19d5-4f09-92fe-55f00f94bea8",
"data": [
{
"test": false,
"id": "3f2c6a1e-8b0d-4c55-9f7e-1d2a3b4c5d6e",
"status": "active",
"created_at": "2026-10-26T08:00:01+00:00",
"updated_at": "2026-10-26T08:00:05+00:00",
"customer": {
"contact_id": "9b8a7c6d-1e2f-4a3b-8c9d-0e1f2a3b4c5d",
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "27820000000",
"shopify_customer_id": "7712345678901"
},
"rhythm": {
"label": "every 6 weeks",
"interval_value": 6,
"interval_unit": "weeks"
},
"items": [
{
"variant_id": "44112233445566",
"sku": "LL-MWL-15",
"title": "Men's Weight Loss 15 pack",
"quantity": 1,
"unit_price": "1650.00"
}
],
"recurring_amount": "1650.00",
"currency": "ZAR",
"discount_ladder": {
"steps": [
{
"from_delivery": 1,
"percent": 7.5
}
],
"next_delivery_percent": 10
},
"delivery_fee": {
"amount": "299.00",
"free_over": null
},
"shipping_address": {
"first_name": "Jane",
"last_name": "Doe",
"address1": "1 Main Road",
"city": "Gqeberha",
"province": "Eastern Cape",
"zip": "6001",
"country": "South Africa",
"phone": "+27820000000"
},
"next_delivery": {
"delivery_number": 2,
"date": "2026-12-07",
"scheduled_for": "2026-12-07T08:00:02+00:00",
"estimated_total": "1784.00"
},
"deliveries": {
"completed": 1,
"scheduled": 11,
"skipped": 0,
"paused": 0,
"failed": 0
},
"paused_at": null,
"resume_at": null,
"cancelled_at": null,
"cancel_reason": null,
"card_on_file": "CONSENTED"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 1,
"has_more": false
}
}{
"error": "Invalid status",
"message": "status must be active, paused or cancelled"
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"error": "Forbidden",
"message": "This connection does not have \"read\" permission"
}{
"error": "Rate limited",
"message": "240 requests per minute per key."
}Subscriptions
List Subscriptions
Every subscription in your store, newest first.
GET
/
v1
/
subscriptions
List Subscriptions
curl --request GET \
--url https://api.flowiq.live/v1/subscriptions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/subscriptions', 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.flowiq.live/v1/subscriptions",
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.flowiq.live/v1/subscriptions"
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.flowiq.live/v1/subscriptions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/subscriptions")
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{
"organization_id": "a4234f32-19d5-4f09-92fe-55f00f94bea8",
"data": [
{
"test": false,
"id": "3f2c6a1e-8b0d-4c55-9f7e-1d2a3b4c5d6e",
"status": "active",
"created_at": "2026-10-26T08:00:01+00:00",
"updated_at": "2026-10-26T08:00:05+00:00",
"customer": {
"contact_id": "9b8a7c6d-1e2f-4a3b-8c9d-0e1f2a3b4c5d",
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "27820000000",
"shopify_customer_id": "7712345678901"
},
"rhythm": {
"label": "every 6 weeks",
"interval_value": 6,
"interval_unit": "weeks"
},
"items": [
{
"variant_id": "44112233445566",
"sku": "LL-MWL-15",
"title": "Men's Weight Loss 15 pack",
"quantity": 1,
"unit_price": "1650.00"
}
],
"recurring_amount": "1650.00",
"currency": "ZAR",
"discount_ladder": {
"steps": [
{
"from_delivery": 1,
"percent": 7.5
}
],
"next_delivery_percent": 10
},
"delivery_fee": {
"amount": "299.00",
"free_over": null
},
"shipping_address": {
"first_name": "Jane",
"last_name": "Doe",
"address1": "1 Main Road",
"city": "Gqeberha",
"province": "Eastern Cape",
"zip": "6001",
"country": "South Africa",
"phone": "+27820000000"
},
"next_delivery": {
"delivery_number": 2,
"date": "2026-12-07",
"scheduled_for": "2026-12-07T08:00:02+00:00",
"estimated_total": "1784.00"
},
"deliveries": {
"completed": 1,
"scheduled": 11,
"skipped": 0,
"paused": 0,
"failed": 0
},
"paused_at": null,
"resume_at": null,
"cancelled_at": null,
"cancel_reason": null,
"card_on_file": "CONSENTED"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 1,
"has_more": false
}
}{
"error": "Invalid status",
"message": "status must be active, paused or cancelled"
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"error": "Forbidden",
"message": "This connection does not have \"read\" permission"
}{
"error": "Rate limited",
"message": "240 requests per minute per key."
}Each item is a subscription object.
The example shows a few fields; every item carries the full subscription object.
Basic Usage
curl "https://api.flowiq.live/v1/subscriptions?status=active&limit=50" \
-H "Authorization: Bearer fiq_YOUR_API_KEY"
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | No | active, paused or cancelled. Leave out for all |
test | string | No | include (default), exclude (real subscriptions only) or only (test subscriptions only) |
updated_since | string | No | ISO date or timestamp; only subscriptions whose record changed since then (use it to sync incrementally) |
email | string | No | The customer’s email address |
shopify_customer_id | string | No | The customer’s Shopify customer id |
contact_id | string | No | The customer’s FlowIQ contact id |
page | integer | No | Page number, default 1 |
limit | integer | No | Per page, default 50, max 100 |
Response
Success (200)
{
"organization_id": "a4234f32-…",
"data": [
{
"id": "3f2c6a1e-8b0d-4c55-9f7e-1d2a3b4c5d6e",
"status": "active",
"customer": { "name": "Jane Doe", "email": "jane@example.com", "phone": "27820000000", "shopify_customer_id": "7712345678901", "contact_id": "9b8a7c6d-…" },
"rhythm": { "label": "every 6 weeks", "interval_value": 6, "interval_unit": "weeks" },
"items": [{ "variant_id": "44112233445566", "sku": "LL-MWL-15", "title": "Men's Weight Loss 15 pack", "quantity": 1, "unit_price": "1650.00" }],
"next_delivery": { "delivery_number": 2, "date": "2026-12-07", "scheduled_for": "2026-12-07T08:00:02+00:00", "estimated_total": "1784.00" }
}
],
"pagination": { "page": 1, "limit": 50, "total": 1, "has_more": false }
}
Integration Example
async function allActiveSubscriptions(apiKey) {
const out = [];
for (let page = 1; ; page++) {
const url = new URL("https://api.flowiq.live/v1/subscriptions");
url.searchParams.set("status", "active");
url.searchParams.set("limit", "100");
url.searchParams.set("page", String(page));
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
if (!res.ok) throw new Error(body.message);
out.push(...body.data);
if (!body.pagination.has_more) return out;
}
}
Authorizations
Your FlowIQ organisation API key (Settings → API Keys), sent as a bearer token. Format: Bearer fiq_YOUR_API_KEY
Query Parameters
active, paused or cancelled. Leave out for all
Available options:
active, paused, cancelled include (default), exclude (real subscriptions only) or only (test subscriptions only)
Available options:
include, exclude, only Only subscriptions whose record changed since this ISO date or timestamp
The customer's email address
The customer's Shopify customer id
The customer's FlowIQ contact id
Page number
Required range:
x >= 1Per page (max 100)
Required range:
1 <= x <= 100
