Skip to main content
POST
/
subscriptions
/
{subscriptionId}
/
cancel
/
Cancel a subscription
curl --request POST \
  --url https://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "cancellationType": "IMMEDIATE",
  "cancellationDate": "2025-12-31"
}
'
import requests

url = "https://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/"

payload = {
    "cancellationType": "IMMEDIATE",
    "cancellationDate": "2025-12-31"
}
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({cancellationType: 'IMMEDIATE', cancellationDate: '2025-12-31'})
};

fetch('https://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/', 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://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/",
  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([
    'cancellationType' => 'IMMEDIATE',
    'cancellationDate' => '2025-12-31'
  ]),
  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://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/"

	payload := strings.NewReader("{\n  \"cancellationType\": \"IMMEDIATE\",\n  \"cancellationDate\": \"2025-12-31\"\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://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"cancellationType\": \"IMMEDIATE\",\n  \"cancellationDate\": \"2025-12-31\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://sandboxapi.kelviq.com/api/v1/subscriptions/{subscriptionId}/cancel/")

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  \"cancellationType\": \"IMMEDIATE\",\n  \"cancellationDate\": \"2025-12-31\"\n}"

response = http.request(request)
puts response.read_body
{
  "message": "Subscription cancellation processed successfully."
}
Click the base URL in the API playground and select the Sandbox host for test data or the Production host for live data. Use credentials from the same environment.

Authorizations

Authorization
string
header
required

The Server API Key obtained from the kelviq application. Pass as a Bearer token in the Authorization header. Example: 'Authorization: Bearer YOUR_API_KEY'

Path Parameters

subscriptionId
string<uuid>
required

The unique identifier of the subscription to be cancelled. Example UUID from docs: 78058918-9746-4280-9b9b-1bd5115eec6e

Body

application/json
cancellationType
enum<string>
required

Type of cancellation to perform.

Available options:
IMMEDIATE,
CURRENT_PERIOD_ENDS,
SPECIFIC_DATE
Example:

"IMMEDIATE"

cancellationDate
string<date> | null

Required if cancellationType is 'SPECIFIC_DATE'. Format: yyyy-MM-dd.

Example:

"2025-12-31"

Response

200 - application/json

Subscription cancellation processed successfully.

message
string
Example:

"Subscription cancellation processed successfully."