curl --request POST \
--url https://api.creem.io/v1/customers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "john@example.com",
"name": "John Doe",
"metadata": {
"key": "value"
},
"external_id": "user-42"
}
'import requests
url = "https://api.creem.io/v1/customers"
payload = {
"email": "john@example.com",
"name": "John Doe",
"metadata": { "key": "value" },
"external_id": "user-42"
}
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({
email: 'john@example.com',
name: 'John Doe',
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'john@example.com',
'name' => 'John Doe',
'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 \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\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/customers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\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::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\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"
}Create a customer
Create a new customer record for the authenticated store.
curl --request POST \
--url https://api.creem.io/v1/customers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "john@example.com",
"name": "John Doe",
"metadata": {
"key": "value"
},
"external_id": "user-42"
}
'import requests
url = "https://api.creem.io/v1/customers"
payload = {
"email": "john@example.com",
"name": "John Doe",
"metadata": { "key": "value" },
"external_id": "user-42"
}
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({
email: 'john@example.com',
name: 'John Doe',
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'john@example.com',
'name' => 'John Doe',
'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 \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\n \"metadata\": {\n \"key\": \"value\"\n },\n \"external_id\": \"user-42\"\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/customers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\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::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"john@example.com\",\n \"name\": \"John Doe\",\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 creation payload
The email address of the customer.
"john@example.com"
The full name of the customer.
"John Doe"
Additional metadata for the customer.
{ "key": "value" }
Your own id for this customer. Unique per store; usage ingestion resolves external_customer_id against it. Trimmed; letters, digits, _ and - only; at most 255 characters.
"user-42"
Response
Successfully created 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"