Create a single dimension
POST
/
v1
/
dimensions
cURL
curl -X POST 'https://api.growthbook.io/api/v1/dimensions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"User Country","datasourceId":"ds_123abc","identifierType":"user","query":"SELECT country FROM users"}'import requests
url = "https://api.growthbook.io/api/v1/dimensions"
payload = {
"name": "<string>",
"datasourceId": "<string>",
"identifierType": "<string>",
"query": "<string>",
"description": "<string>",
"owner": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
datasourceId: '<string>',
identifierType: '<string>',
query: '<string>',
description: '<string>',
owner: '<string>'
})
};
fetch('https://api.growthbook.io/api/v1/dimensions', 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.growthbook.io/api/v1/dimensions",
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([
'name' => '<string>',
'datasourceId' => '<string>',
'identifierType' => '<string>',
'query' => '<string>',
'description' => '<string>',
'owner' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.growthbook.io/api/v1/dimensions"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.growthbook.io/api/v1/dimensions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/dimensions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dimension": {
"id": "<string>",
"dateCreated": "<string>",
"dateUpdated": "<string>",
"owner": "<string>",
"datasourceId": "<string>",
"identifierType": "<string>",
"name": "<string>",
"query": "<string>",
"ownerEmail": "<string>",
"description": "<string>"
}
}Authorizations
bearerAuthbasicAuth
If using Bearer auth, pass the Secret Key as the token:
curl https://api.growthbook.io/api/v1/features -H "Authorization: Bearer secret_abc123DEF456"
Body
application/json
Name of the dimension
ID of the datasource this dimension belongs to
Type of identifier (user, anonymous, etc.)
SQL query or equivalent for the dimension
Description of the dimension
Maximum string length:
10000The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization.
Where this dimension must be managed from. If not set (empty string), it can be managed from anywhere.
Available options:
, api Response
200 - application/json
Resource created
Show child attributes
Show child attributes
Was this page helpful?
⌘I
cURL
curl -X POST 'https://api.growthbook.io/api/v1/dimensions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"User Country","datasourceId":"ds_123abc","identifierType":"user","query":"SELECT country FROM users"}'import requests
url = "https://api.growthbook.io/api/v1/dimensions"
payload = {
"name": "<string>",
"datasourceId": "<string>",
"identifierType": "<string>",
"query": "<string>",
"description": "<string>",
"owner": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
datasourceId: '<string>',
identifierType: '<string>',
query: '<string>',
description: '<string>',
owner: '<string>'
})
};
fetch('https://api.growthbook.io/api/v1/dimensions', 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.growthbook.io/api/v1/dimensions",
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([
'name' => '<string>',
'datasourceId' => '<string>',
'identifierType' => '<string>',
'query' => '<string>',
'description' => '<string>',
'owner' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.growthbook.io/api/v1/dimensions"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.growthbook.io/api/v1/dimensions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/dimensions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"datasourceId\": \"<string>\",\n \"identifierType\": \"<string>\",\n \"query\": \"<string>\",\n \"description\": \"<string>\",\n \"owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dimension": {
"id": "<string>",
"dateCreated": "<string>",
"dateUpdated": "<string>",
"owner": "<string>",
"datasourceId": "<string>",
"identifierType": "<string>",
"name": "<string>",
"query": "<string>",
"ownerEmail": "<string>",
"description": "<string>"
}
}
