curl --request PATCH \
--url https://api.creem.io/v1/customers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"customer_id": "cust_abc123",
"name": "John Doe",
"email": "john@example.com",
"metadata": {
"key": "value"
},
"external_id": "user-42"
}
'import requests
url = "https://api.creem.io/v1/customers"
payload = {
"customer_id": "cust_abc123",
"name": "John Doe",
"email": "john@example.com",
"metadata": { "key": "value" },
"external_id": "user-42"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_id: 'cust_abc123',
name: 'John Doe',
email: 'john@example.com',
metadata: {key: 'value'},
external_id: 'user-42'
})
};
fetch('https://api.creem.io/v1/customers', 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/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => 'cust_abc123',
'name' => 'John Doe',
'email' => 'john@example.com',
'metadata' => [
'key' => 'value'
],
'external_id' => 'user-42'
]),
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/customers"
payload := strings.NewReader("{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.creem.io/v1/customers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}"
response = http.request(request)
puts response.read_body{
"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"
},
"external_id": "user-42"
}Update a customer
Update a customer’s name, email, metadata or external id. Only the fields you send change.
curl --request PATCH \
--url https://api.creem.io/v1/customers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"customer_id": "cust_abc123",
"name": "John Doe",
"email": "john@example.com",
"metadata": {
"key": "value"
},
"external_id": "user-42"
}
'import requests
url = "https://api.creem.io/v1/customers"
payload = {
"customer_id": "cust_abc123",
"name": "John Doe",
"email": "john@example.com",
"metadata": { "key": "value" },
"external_id": "user-42"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_id: 'cust_abc123',
name: 'John Doe',
email: 'john@example.com',
metadata: {key: 'value'},
external_id: 'user-42'
})
};
fetch('https://api.creem.io/v1/customers', 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/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => 'cust_abc123',
'name' => 'John Doe',
'email' => 'john@example.com',
'metadata' => [
'key' => 'value'
],
'external_id' => 'user-42'
]),
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/customers"
payload := strings.NewReader("{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.creem.io/v1/customers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creem.io/v1/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"cust_abc123\",\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\n}"
response = http.request(request)
puts response.read_body{
"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"
},
"external_id": "user-42"
}Authorizations
API key for authentication. You can find your API key in the Creem dashboard under Settings > API Keys.
Body
Customer update payload
The ID of the customer to update.
"cust_abc123"
The full name of the customer.
"John Doe"
The email address of the customer. Must be unique within the store; changing it to an email already used by another customer returns 409. Stored lowercased. Omit to leave unchanged.
"john@example.com"
Additional metadata for the customer. Omit to leave unchanged; send null to clear it.
{ "key": "value" }
Your own id for this customer. Unique per store; usage ingestion resolves external_customer_id against it. Omit to leave unchanged; send null to clear it. Trimmed; letters, digits, _ and - only; at most 255 characters.
"user-42"
Response
Successfully updated the customer
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.
Customer email address.
"user@example.com"
The ISO 3166-1 alpha-2 country code for the customer.
^[A-Z]{2}$"US"
Creation date of the customer
"2023-01-01T00:00:00Z"
Last updated date of the customer
"2023-01-01T00:00:00Z"
Customer name.
"John Doe"
Additional metadata associated with the customer.
{ "key": "value" }
Your own id for this customer, when you have set one — usage ingestion resolves external_customer_id against it.
"user-42"