post__subscriptions_cancel
POST /subscriptions/cancel
Cancel Subscription
Cancel the active subscription for the authenticated user's organization. This will immediately cancel the subscription in Stripe and create a cancellation record.
Parameters
This endpoint does not accept query parameters or request body. Authentication is required.
TypeScript Client Library
public cancelSubscription = async (): Promise<CancelSubscriptionResponse> => {
return this.makeRequest<CancelSubscriptionResponse>('subscriptions/cancel', 'POST', null);
};Code Samples
curl -X POST https://backend.flashback.tech/subscriptions/cancel \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'POST https://backend.flashback.tech/subscriptions/cancel HTTP/1.1
Host: localhost:3000
Accept: application/json
Authorization: Bearer {access-token}const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('https://backend.flashback.tech/subscriptions/cancel',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.post 'https://backend.flashback.tech/subscriptions/cancel',
nil, headers: headers
p JSON.parse(result)import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://backend.flashback.tech/subscriptions/cancel', headers = headers)
print(r.json())<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('POST','https://backend.flashback.tech/subscriptions/cancel', array(
'headers' => $headers,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...URL obj = new URL("https://backend.flashback.tech/subscriptions/cancel");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{})
req, err := http.NewRequest("POST", "https://backend.flashback.tech/subscriptions/cancel", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}Example responses
200 Response
{
"success": true,
"message": "Subscription cancelled successfully"
}400 Response (No Organization)
{
"success": false,
"error_code": "NO_ORGANIZATION",
"message": "User must belong to an organization"
}400 Response (Already Cancelled)
{
"success": false,
"error_code": "SUBSCRIPTION_ALREADY_CANCELLED",
"message": "The subscription is already cancelled"
}400 Response (Not Cancellable)
{
"success": false,
"error_code": "SUBSCRIPTION_NOT_CANCELLABLE",
"message": "The subscription cannot be cancelled. Current status: past_due"
}400 Response (No Stripe ID)
{
"success": false,
"error_code": "NO_STRIPE_SUBSCRIPTION_ID",
"message": "The subscription does not have a valid Stripe ID"
}400 Response (Stripe Not Found)
{
"success": false,
"error_code": "STRIPE_SUBSCRIPTION_NOT_FOUND",
"message": "Could not find the subscription in Stripe"
}404 Response (User Not Found)
{
"success": false,
"error_code": "USER_NOT_FOUND",
"message": "User not found"
}404 Response (No Active Subscription)
{
"success": false,
"error_code": "NO_ACTIVE_SUBSCRIPTION",
"message": "No active subscription found to cancel"
}500 Response (Stripe Cancellation Failed)
{
"success": false,
"error_code": "STRIPE_CANCELLATION_FAILED",
"message": "Error cancelling the subscription in Stripe"
}500 Response (Internal Error)
{
"success": false,
"error_code": "INTERNAL_ERROR",
"message": "Error processing subscription cancellation"
}Responses
Response Schema
Status Code 200
» success
boolean
false
none
Indicates if the request was successful
» message
string
false
none
Success message
Status Code 400
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code
» message
string
false
none
Human-readable error message
Status Code 404
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code
» message
string
false
none
Human-readable error message
Status Code 500
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code
» message
string
false
none
Human-readable error message
Last updated
Was this helpful?