curl --request PUT \
--url https://api.eflow.team/v1/networks/usm/datapoints \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"network_usm_data_point_id": 1,
"identifier": "ltv_90d",
"name": "90-Day LTV (USD)",
"type": "number",
"status": "active",
"description": "Modelled 90-day customer lifetime value, network currency"
}
'import requests
url = "https://api.eflow.team/v1/networks/usm/datapoints"
payload = {
"network_usm_data_point_id": 1,
"identifier": "ltv_90d",
"name": "90-Day LTV (USD)",
"type": "number",
"status": "active",
"description": "Modelled 90-day customer lifetime value, network currency"
}
headers = {
"X-Eflow-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
network_usm_data_point_id: 1,
identifier: 'ltv_90d',
name: '90-Day LTV (USD)',
type: 'number',
status: 'active',
description: 'Modelled 90-day customer lifetime value, network currency'
})
};
fetch('https://api.eflow.team/v1/networks/usm/datapoints', 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.eflow.team/v1/networks/usm/datapoints",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'network_usm_data_point_id' => 1,
'identifier' => 'ltv_90d',
'name' => '90-Day LTV (USD)',
'type' => 'number',
'status' => 'active',
'description' => 'Modelled 90-day customer lifetime value, network currency'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-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.eflow.team/v1/networks/usm/datapoints"
payload := strings.NewReader("{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-Eflow-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.put("https://api.eflow.team/v1/networks/usm/datapoints")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/networks/usm/datapoints")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}"
response = http.request(request)
puts response.read_body{
"identifier": "ltv_90d",
"name": "90-Day LTV",
"type": "text",
"status": "active",
"network_usm_data_point_id": 1,
"network_id": 1,
"description": "<string>",
"time_created": 1788398582,
"time_saved": 1788398592
}{
"error": "<string>"
}Update Data Point
Update a Customer Value data point. The data point is addressed by network_usm_data_point_id in the request body — there is no ID in the path.
This is a full replace, not a merge: send every field you want to keep. Any field you omit is reset to its empty value.
curl --request PUT \
--url https://api.eflow.team/v1/networks/usm/datapoints \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"network_usm_data_point_id": 1,
"identifier": "ltv_90d",
"name": "90-Day LTV (USD)",
"type": "number",
"status": "active",
"description": "Modelled 90-day customer lifetime value, network currency"
}
'import requests
url = "https://api.eflow.team/v1/networks/usm/datapoints"
payload = {
"network_usm_data_point_id": 1,
"identifier": "ltv_90d",
"name": "90-Day LTV (USD)",
"type": "number",
"status": "active",
"description": "Modelled 90-day customer lifetime value, network currency"
}
headers = {
"X-Eflow-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
network_usm_data_point_id: 1,
identifier: 'ltv_90d',
name: '90-Day LTV (USD)',
type: 'number',
status: 'active',
description: 'Modelled 90-day customer lifetime value, network currency'
})
};
fetch('https://api.eflow.team/v1/networks/usm/datapoints', 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.eflow.team/v1/networks/usm/datapoints",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'network_usm_data_point_id' => 1,
'identifier' => 'ltv_90d',
'name' => '90-Day LTV (USD)',
'type' => 'number',
'status' => 'active',
'description' => 'Modelled 90-day customer lifetime value, network currency'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-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.eflow.team/v1/networks/usm/datapoints"
payload := strings.NewReader("{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-Eflow-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.put("https://api.eflow.team/v1/networks/usm/datapoints")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/networks/usm/datapoints")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"network_usm_data_point_id\": 1,\n \"identifier\": \"ltv_90d\",\n \"name\": \"90-Day LTV (USD)\",\n \"type\": \"number\",\n \"status\": \"active\",\n \"description\": \"Modelled 90-day customer lifetime value, network currency\"\n}"
response = http.request(request)
puts response.read_body{
"identifier": "ltv_90d",
"name": "90-Day LTV",
"type": "text",
"status": "active",
"network_usm_data_point_id": 1,
"network_id": 1,
"description": "<string>",
"time_created": 1788398582,
"time_saved": 1788398592
}{
"error": "<string>"
}- The ID goes in the body, not the path. Send
network_usm_data_point_idinside the JSON object; the path is the same/networks/usm/datapointsyou POST to. - It is a full replace, not a merge. Any field you leave out is reset to its empty value — omit
descriptionand it becomes an empty string. Send the complete object every time.
identifier does not rewrite rule goals that reference the old value, so update those rules too.Authorizations
The Everflow API key generated from the Control Center > Security.
Body
The data point to update.
The key you send with conversions and reference from rule goals. Required, and unique within the network.
255"ltv_90d"
The display name shown in the Everflow UI.
255"90-Day LTV"
The value type. Use number for data points compared with greater_than or less_than, and text for those matched with exact_match, contains, begins_with or ends_with.
text, number Whether the data point is collected and evaluated.
active, inactive Optional free-text note about what the data point holds.
500Response
The updated data point.
The key you send with conversions and reference from rule goals. Required, and unique within the network.
255"ltv_90d"
The display name shown in the Everflow UI.
255"90-Day LTV"
The value type. Use number for data points compared with greater_than or less_than, and text for those matched with exact_match, contains, begins_with or ends_with.
text, number Whether the data point is collected and evaluated.
active, inactive Unique data point ID.
1
Network ID.
1
Optional free-text note about what the data point holds.
500Unix timestamp of creation.
1788398582
Unix timestamp of last update.
1788398592
Was this page helpful?
