curl --request POST \
--url https://api.creem.io/v1/subscriptions/{id}/upgrade \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"product_id": "prod_123",
"update_behavior": "proration-charge-immediately"
}
'import requests
url = "https://api.creem.io/v1/subscriptions/{id}/upgrade"
payload = {
"product_id": "prod_123",
"update_behavior": "proration-charge-immediately"
}
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({product_id: 'prod_123', update_behavior: 'proration-charge-immediately'})
};
fetch('https://api.creem.io/v1/subscriptions/{id}/upgrade', 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}/upgrade",
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([
'product_id' => 'prod_123',
'update_behavior' => 'proration-charge-immediately'
]),
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}/upgrade"
payload := strings.NewReader("{\n \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\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}/upgrade")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/subscriptions/{id}/upgrade")
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 \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\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"
}
}Upgrade a subscription to a different product
Upgrade a subscription to a different product or plan. Handle proration and plan changes seamlessly.
curl --request POST \
--url https://api.creem.io/v1/subscriptions/{id}/upgrade \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"product_id": "prod_123",
"update_behavior": "proration-charge-immediately"
}
'import requests
url = "https://api.creem.io/v1/subscriptions/{id}/upgrade"
payload = {
"product_id": "prod_123",
"update_behavior": "proration-charge-immediately"
}
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({product_id: 'prod_123', update_behavior: 'proration-charge-immediately'})
};
fetch('https://api.creem.io/v1/subscriptions/{id}/upgrade', 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}/upgrade",
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([
'product_id' => 'prod_123',
'update_behavior' => 'proration-charge-immediately'
]),
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}/upgrade"
payload := strings.NewReader("{\n \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\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}/upgrade")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/subscriptions/{id}/upgrade")
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 \"product_id\": \"prod_123\",\n \"update_behavior\": \"proration-charge-immediately\"\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 upgrade payload
The ID of the product to upgrade to
"prod_123"
The update behavior for the subscription (defaults to proration-charge-immediately)
proration-charge-immediately, proration-charge, proration-none Response
Successfully upgraded the 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" }