curl --request POST \
--url https://api.creem.io/v1/subscriptions/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"items": [
{
"id": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"update_behavior": "proration-charge"
}
'import requests
url = "https://api.creem.io/v1/subscriptions/{id}"
payload = {
"items": [
{
"id": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"update_behavior": "proration-charge"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [{id: '<string>', product_id: '<string>', price_id: '<string>', units: 123}],
update_behavior: 'proration-charge'
})
};
fetch('https://api.creem.io/v1/subscriptions/{id}', 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.creem.io/v1/subscriptions/{id}",
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([
'items' => [
[
'id' => '<string>',
'product_id' => '<string>',
'price_id' => '<string>',
'units' => 123
]
],
'update_behavior' => 'proration-charge'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://api.creem.io/v1/subscriptions/{id}"
payload := strings.NewReader("{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://api.creem.io/v1/subscriptions/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/subscriptions/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"mode": "test",
"object": "subscription",
"product": {
"id": "<string>",
"mode": "test",
"object": "<string>",
"name": "<string>",
"description": "This is a sample product description.",
"price": 400,
"currency": "USD",
"billing_type": "recurring",
"billing_period": "every-month",
"status": "active",
"tax_mode": "inclusive",
"tax_category": "saas",
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2023-01-01T00:00:00Z",
"image_url": "https://example.com/image.jpg",
"image_urls": [
"https://example.com/image.jpg"
],
"features": [
{
"id": "feat_abc123",
"type": "licenseKey",
"description": "Access to premium course materials."
}
],
"recurring_interval": "month",
"recurring_interval_count": 3,
"product_url": "https://creem.io/product/prod_123123123123",
"default_success_url": "https://example.com/?status=successful",
"custom_fields": [
{
"type": "text",
"key": "<string>",
"label": "<string>",
"optional": true,
"text": {
"max_length": 123,
"minimum_length": 123,
"value": "<string>"
},
"checkbox": {
"label": "<string>",
"value": true
}
}
]
},
"customer": {
"id": "<string>",
"mode": "test",
"object": "<string>",
"email": "user@example.com",
"country": "US",
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2023-01-01T00:00:00Z",
"name": "John Doe",
"metadata": {
"key": "value"
}
},
"collection_method": "charge_automatically",
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-09-12T12:34:56Z",
"items": [
{
"id": "<string>",
"mode": "test",
"object": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"last_transaction_id": "tran_3e6Z6TzvHKdsjEgXnGDEp0",
"last_transaction": {
"id": "<string>",
"mode": "test",
"object": "transaction",
"amount": 2000,
"currency": "USD",
"type": "payment",
"status": "pending",
"created_at": 123,
"amount_paid": 2000,
"discount_amount": 2000,
"tax_country": "US",
"tax_amount": 2000,
"refunded_amount": 2000,
"order": "<string>",
"subscription": "<string>",
"customer": "<string>",
"description": "<string>",
"period_start": 123,
"period_end": 123
},
"last_transaction_date": "2024-09-12T12:34:56Z",
"next_transaction_date": "2024-09-12T12:34:56Z",
"current_period_start_date": "2024-09-12T12:34:56Z",
"current_period_end_date": "2024-09-12T12:34:56Z",
"canceled_at": "2024-09-12T12:34:56Z",
"discount": {
"id": "dis_3e6Z6TzvHKdsjEgXnGDEp0",
"discountCode": "HOLIDAY2024",
"name": "<string>",
"type": "percentage",
"amount": 123,
"duration": "forever",
"durationInMonths": 123
},
"metadata": {
"userId": "user_123",
"plan": "pro"
}
}Update a subscription
Modify subscription details like units, seats, or add-ons. Support proration and immediate billing options.
curl --request POST \
--url https://api.creem.io/v1/subscriptions/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"items": [
{
"id": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"update_behavior": "proration-charge"
}
'import requests
url = "https://api.creem.io/v1/subscriptions/{id}"
payload = {
"items": [
{
"id": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"update_behavior": "proration-charge"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [{id: '<string>', product_id: '<string>', price_id: '<string>', units: 123}],
update_behavior: 'proration-charge'
})
};
fetch('https://api.creem.io/v1/subscriptions/{id}', 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.creem.io/v1/subscriptions/{id}",
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([
'items' => [
[
'id' => '<string>',
'product_id' => '<string>',
'price_id' => '<string>',
'units' => 123
]
],
'update_behavior' => 'proration-charge'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://api.creem.io/v1/subscriptions/{id}"
payload := strings.NewReader("{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://api.creem.io/v1/subscriptions/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/subscriptions/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"id\": \"<string>\",\n \"product_id\": \"<string>\",\n \"price_id\": \"<string>\",\n \"units\": 123\n }\n ],\n \"update_behavior\": \"proration-charge\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"mode": "test",
"object": "subscription",
"product": {
"id": "<string>",
"mode": "test",
"object": "<string>",
"name": "<string>",
"description": "This is a sample product description.",
"price": 400,
"currency": "USD",
"billing_type": "recurring",
"billing_period": "every-month",
"status": "active",
"tax_mode": "inclusive",
"tax_category": "saas",
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2023-01-01T00:00:00Z",
"image_url": "https://example.com/image.jpg",
"image_urls": [
"https://example.com/image.jpg"
],
"features": [
{
"id": "feat_abc123",
"type": "licenseKey",
"description": "Access to premium course materials."
}
],
"recurring_interval": "month",
"recurring_interval_count": 3,
"product_url": "https://creem.io/product/prod_123123123123",
"default_success_url": "https://example.com/?status=successful",
"custom_fields": [
{
"type": "text",
"key": "<string>",
"label": "<string>",
"optional": true,
"text": {
"max_length": 123,
"minimum_length": 123,
"value": "<string>"
},
"checkbox": {
"label": "<string>",
"value": true
}
}
]
},
"customer": {
"id": "<string>",
"mode": "test",
"object": "<string>",
"email": "user@example.com",
"country": "US",
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2023-01-01T00:00:00Z",
"name": "John Doe",
"metadata": {
"key": "value"
}
},
"collection_method": "charge_automatically",
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-09-12T12:34:56Z",
"items": [
{
"id": "<string>",
"mode": "test",
"object": "<string>",
"product_id": "<string>",
"price_id": "<string>",
"units": 123
}
],
"last_transaction_id": "tran_3e6Z6TzvHKdsjEgXnGDEp0",
"last_transaction": {
"id": "<string>",
"mode": "test",
"object": "transaction",
"amount": 2000,
"currency": "USD",
"type": "payment",
"status": "pending",
"created_at": 123,
"amount_paid": 2000,
"discount_amount": 2000,
"tax_country": "US",
"tax_amount": 2000,
"refunded_amount": 2000,
"order": "<string>",
"subscription": "<string>",
"customer": "<string>",
"description": "<string>",
"period_start": 123,
"period_end": 123
},
"last_transaction_date": "2024-09-12T12:34:56Z",
"next_transaction_date": "2024-09-12T12:34:56Z",
"current_period_start_date": "2024-09-12T12:34:56Z",
"current_period_end_date": "2024-09-12T12:34:56Z",
"canceled_at": "2024-09-12T12:34:56Z",
"discount": {
"id": "dis_3e6Z6TzvHKdsjEgXnGDEp0",
"discountCode": "HOLIDAY2024",
"name": "<string>",
"type": "percentage",
"amount": 123,
"duration": "forever",
"durationInMonths": 123
},
"metadata": {
"userId": "user_123",
"plan": "pro"
}
}Authorizations
API key for authentication. You can find your API key in the Creem dashboard under Settings > API Keys.
Path Parameters
The unique identifier of the subscription
Body
Subscription update payload
List of subscription items to update/create. If no item ID is provided, the item will be created.
Show child attributes
Show child attributes
The update behavior for the subscription (defaults to proration)
proration-charge-immediately, proration-charge, proration-none Response
Successfully updated a subscription
Unique identifier for the object.
String representing the environment.
test, prod, sandbox String representing the object's type. Objects of the same type share the same value.
"subscription"
The product associated with the subscription.
Show child attributes
Show child attributes
The customer who owns the subscription.
Show child attributes
Show child attributes
The method used for collecting payments for the subscription.
charge_automatically "charge_automatically"
The current status of the subscription.
active, canceled, unpaid, paused, trialing, scheduled_cancel, past_due "active"
The date and time when the subscription was created.
"2024-01-01T00:00:00Z"
The date and time when the subscription was last updated.
"2024-09-12T12:34:56Z"
Subscription items.
Show child attributes
Show child attributes
The ID of the last paid transaction.
"tran_3e6Z6TzvHKdsjEgXnGDEp0"
The last paid transaction.
Show child attributes
Show child attributes
The date of the last paid transaction.
"2024-09-12T12:34:56Z"
The date when the next subscription transaction will be charged.
"2024-09-12T12:34:56Z"
The start date of the current subscription period.
"2024-09-12T12:34:56Z"
The end date of the current subscription period.
"2024-09-12T12:34:56Z"
The date and time when the subscription was canceled, if applicable.
"2024-09-12T12:34:56Z"
The discount applied to the subscription, if any.
Show child attributes
Show child attributes
Metadata for the subscription in the form of key-value pairs.
{ "userId": "user_123", "plan": "pro" }