List subscriptions
curl --request GET \
--url https://api.bachs.io/v1/subscriptions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.bachs.io/v1/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/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))
}{
"items": [
{
"id": "sub_1a2b3c4d5e6f",
"payment_method_id": "pm_7h8i9j0k",
"status": "active",
"collection_method": "charge_automatically",
"currency": "USD",
"amount": "10.00",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"quantity": 1,
"current_period_start": "2026-07-13T12:00:00Z",
"current_period_end": "2026-08-13T12:00:00Z",
"previously_billed_at": "2026-07-13T12:00:00Z",
"next_billed_at": "2026-08-13T12:00:00Z",
"trial_end": null,
"cancel_at_period_end": false,
"canceled_at": null,
"created_at": "2026-07-13T12:00:00Z",
"product": {
"id": "prod_abc123",
"name": "Pro plan",
"description": "Everything in Pro.",
"status": "active",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"items": [
{
"id": "si_11aa22bb",
"status": "active",
"quantity": 1,
"recurring": true,
"price_type": "fixed",
"unit_amount": "10.00",
"currency": "USD",
"previously_billed_at": "2026-07-13T12:00:00Z",
"next_billed_at": "2026-08-13T12:00:00Z",
"price": {
"id": "price_pro_usd",
"product_id": "prod_abc123",
"price_type": "fixed",
"currency": "USD",
"unit_amount": "10.00",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"seat_tiers": null,
"is_archived": false,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"product": {
"id": "prod_abc123",
"name": "Pro plan",
"status": "active",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"created_at": "2026-07-13T12:00:00Z",
"updated_at": "2026-07-13T12:00:00Z"
}
],
"customer": {
"customer_id": "cust_xyz789",
"email": "customer@example.com",
"name": "Jane Doe",
"phone_number": "+2348012345678",
"metadata": {},
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
}
}
],
"pagination": {
"next_cursor": null,
"prev_cursor": null,
"has_more": false,
"limit": 50,
"offset": 0,
"returned": 1,
"total": 1
}
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}{
"detail": "An unexpected error occurred. Please try again later.",
"error_code": "INTERNAL_SERVER_ERROR"
}Subscriptions
List subscriptions
List subscriptions for your account, newest first. Filter by customer or status.
GET
/
v1
/
subscriptions
List subscriptions
curl --request GET \
--url https://api.bachs.io/v1/subscriptions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.bachs.io/v1/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/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))
}{
"items": [
{
"id": "sub_1a2b3c4d5e6f",
"payment_method_id": "pm_7h8i9j0k",
"status": "active",
"collection_method": "charge_automatically",
"currency": "USD",
"amount": "10.00",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"quantity": 1,
"current_period_start": "2026-07-13T12:00:00Z",
"current_period_end": "2026-08-13T12:00:00Z",
"previously_billed_at": "2026-07-13T12:00:00Z",
"next_billed_at": "2026-08-13T12:00:00Z",
"trial_end": null,
"cancel_at_period_end": false,
"canceled_at": null,
"created_at": "2026-07-13T12:00:00Z",
"product": {
"id": "prod_abc123",
"name": "Pro plan",
"description": "Everything in Pro.",
"status": "active",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"items": [
{
"id": "si_11aa22bb",
"status": "active",
"quantity": 1,
"recurring": true,
"price_type": "fixed",
"unit_amount": "10.00",
"currency": "USD",
"previously_billed_at": "2026-07-13T12:00:00Z",
"next_billed_at": "2026-08-13T12:00:00Z",
"price": {
"id": "price_pro_usd",
"product_id": "prod_abc123",
"price_type": "fixed",
"currency": "USD",
"unit_amount": "10.00",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"seat_tiers": null,
"is_archived": false,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"product": {
"id": "prod_abc123",
"name": "Pro plan",
"status": "active",
"billing_cycle": {
"interval": "month",
"frequency": 1
},
"trial_period": null,
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
},
"created_at": "2026-07-13T12:00:00Z",
"updated_at": "2026-07-13T12:00:00Z"
}
],
"customer": {
"customer_id": "cust_xyz789",
"email": "customer@example.com",
"name": "Jane Doe",
"phone_number": "+2348012345678",
"metadata": {},
"created_at": "2026-07-01T09:00:00Z",
"updated_at": "2026-07-01T09:00:00Z"
}
}
],
"pagination": {
"next_cursor": null,
"prev_cursor": null,
"has_more": false,
"limit": 50,
"offset": 0,
"returned": 1,
"total": 1
}
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}{
"detail": "An unexpected error occurred. Please try again later.",
"error_code": "INTERNAL_SERVER_ERROR"
}Authorizations
Bearer token authentication. Pass your API key as Authorization: Bearer sk_.... See Authentication for keys, scopes, and sandbox vs production.
Query Parameters
Required range:
1 <= x <= 100Required range:
x >= 0Only subscriptions for this customer (cust_...).
Only subscriptions in this status.
Available options:
trialing, active, past_due, unpaid, canceled Response
A page of subscriptions
The subscriptions on this page, newest first. Each entry is a Subscription with the same shape the retrieve endpoint returns.
Show child attributes
Show child attributes
Where this page sits in the full result set, so you know the applied limit and offset, how many rows matched, and whether another page exists.
Show child attributes
Show child attributes

