curl --request GET \
--url https://api.getdialed.ai/v1/data/stores/{store}/records/{key} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getdialed.ai/v1/data/stores/{store}/records/{key}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getdialed.ai/v1/data/stores/{store}/records/{key}', 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.getdialed.ai/v1/data/stores/{store}/records/{key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getdialed.ai/v1/data/stores/{store}/records/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getdialed.ai/v1/data/stores/{store}/records/{key}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdialed.ai/v1/data/stores/{store}/records/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"created_at": "2026-08-01T09:00:00Z",
"key": "+15551234567",
"resolved": {
"campaign": "Inbound Main",
"e164": "+15551234567",
"friendly_name": "West Region Main",
"status": "active"
},
"resolved_config_version": 1,
"updated_at": "2026-08-20T12:00:00Z"
}{
"detail": "Authentication required"
}{
"detail": "Record not found"
}{
"detail": "Validation error"
}{
"detail": "Rate limit exceeded"
}Get a store record
Returns one record’s resolved view. Add include=layers to see each source’s own assertions and provenance — the answer to ‘why is this value what it is’. The key may be supplied in E.164 form or as a national number the store accepts. A record that does not exist, or belongs to another account, returns 404.
curl --request GET \
--url https://api.getdialed.ai/v1/data/stores/{store}/records/{key} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getdialed.ai/v1/data/stores/{store}/records/{key}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getdialed.ai/v1/data/stores/{store}/records/{key}', 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.getdialed.ai/v1/data/stores/{store}/records/{key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getdialed.ai/v1/data/stores/{store}/records/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getdialed.ai/v1/data/stores/{store}/records/{key}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdialed.ai/v1/data/stores/{store}/records/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"created_at": "2026-08-01T09:00:00Z",
"key": "+15551234567",
"resolved": {
"campaign": "Inbound Main",
"e164": "+15551234567",
"friendly_name": "West Region Main",
"status": "active"
},
"resolved_config_version": 1,
"updated_at": "2026-08-20T12:00:00Z"
}{
"detail": "Authentication required"
}{
"detail": "Record not found"
}{
"detail": "Validation error"
}{
"detail": "Rate limit exceeded"
}Authorizations
Query Parameters
Optional extra sections on a record read.
layers adds each source's own assertions and provenance beside the resolved
view. An out-of-enum value is rejected 422.
layers Response
Successful Response
One record of a store: its resolved view, and optionally its layers.
resolved is the single view computed from the record's layers by your
precedence. Request include=layers to also see each source's own
assertions and provenance.
The record's key, in the store's canonical key format.
The resolved view — one value per field, taken from the highest-precedence source asserting it. A field no source asserts is absent rather than null.
Which precedence version produced this resolved view. A value behind the store's current config_version means the view is awaiting recompute.
When the record was first written by any source.
When any source last wrote to the record.
Each source's own assertions, keyed by source name. Present only when include=layers was requested.
Show child attributes
Show child attributes