curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"ein": "<string>",
"email": "[email protected]",
"firstName": "<string>",
"lastName": "<string>",
"phone": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"website": "<string>"
},
"updateMask": [
"profile"
]
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}"
payload = {
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"ein": "<string>",
"email": "[email protected]",
"firstName": "<string>",
"lastName": "<string>",
"phone": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"website": "<string>"
},
"updateMask": ["profile"]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
profile: {
address: {
city: '<string>',
postalCode: '<string>',
state: '<string>',
street: '<string>'
},
companyName: '<string>',
displayName: '<string>',
ein: '<string>',
email: '[email protected]',
firstName: '<string>',
lastName: '<string>',
phone: '<string>',
supportEmail: '[email protected]',
type: 'organization',
website: '<string>'
},
updateMask: ['profile']
})
};
fetch('https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}', 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.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}",
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([
'profile' => [
'address' => [
'city' => '<string>',
'postalCode' => '<string>',
'state' => '<string>',
'street' => '<string>'
],
'companyName' => '<string>',
'displayName' => '<string>',
'ein' => '<string>',
'email' => '[email protected]',
'firstName' => '<string>',
'lastName' => '<string>',
'phone' => '<string>',
'supportEmail' => '[email protected]',
'type' => 'organization',
'website' => '<string>'
],
'updateMask' => [
'profile'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}"
payload := strings.NewReader("{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.patch("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"capabilities": {
"canResubmit": true,
"editableFields": [
"<string>"
]
},
"createdAt": "2026-01-01T00:00:00.000Z",
"failureReasons": [
{
"fields": [
"profile.address"
],
"message": "Street address is not valid"
},
{
"fields": [
"profile.phone"
],
"message": "Mobile Phone Number not supported. Must be a Mobile Phone Number that can receive SMS messages."
}
],
"feedback": [
{
"category": "tax_id",
"message": "<string>"
}
],
"id": "<string>",
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"einLast4": "<string>",
"email": "[email protected]",
"entityType": "private_profit",
"firstName": "<string>",
"lastName": "<string>",
"phoneLast4": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"vertical": "agriculture",
"website": "<string>"
},
"status": "submitting",
"updatedAt": "2026-01-01T00:00:00.000Z",
"registeredAt": "2026-01-01T00:00:00.000Z",
"submittedAt": "2026-01-01T00:00:00.000Z"
}
}{
"data": {
"capabilities": {
"canResubmit": true,
"editableFields": [
"<string>"
]
},
"createdAt": "2026-01-01T00:00:00.000Z",
"failureReasons": [
{
"fields": [
"profile.address"
],
"message": "Street address is not valid"
},
{
"fields": [
"profile.phone"
],
"message": "Mobile Phone Number not supported. Must be a Mobile Phone Number that can receive SMS messages."
}
],
"feedback": [
{
"category": "tax_id",
"message": "<string>"
}
],
"id": "<string>",
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"einLast4": "<string>",
"email": "[email protected]",
"entityType": "private_profit",
"firstName": "<string>",
"lastName": "<string>",
"phoneLast4": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"vertical": "agriculture",
"website": "<string>"
},
"status": "submitting",
"updatedAt": "2026-01-01T00:00:00.000Z",
"registeredAt": "2026-01-01T00:00:00.000Z",
"submittedAt": "2026-01-01T00:00:00.000Z"
}
}{
"code": "IDEMPOTENCY_KEY_REQUIRED",
"status": 400,
"title": "Idempotency Key Required",
"type": "https://photon.codes/docs/problems/idempotency-key-required"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "BRAND_NOT_FOUND",
"status": 404,
"title": "Brand Not Found",
"type": "https://photon.codes/docs/problems/brand-not-found"
}{
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"title": "Idempotency Conflict",
"type": "https://photon.codes/docs/problems/idempotency-conflict"
}{
"code": "PAYLOAD_TOO_LARGE",
"status": 413,
"title": "Payload Too Large",
"type": "https://photon.codes/docs/problems/payload-too-large"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "RATE_LIMITED",
"status": 429,
"title": "Too Many Requests",
"type": "https://photon.codes/docs/problems/rate-limited"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "SERVICE_FAILURE",
"status": 502,
"title": "Service Failure",
"type": "https://photon.codes/docs/problems/service-failure"
}{
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"title": "Service Temporarily Unavailable",
"type": "https://photon.codes/docs/problems/service-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Correct a brand
Updates a brand. A PATCH containing only supportEmail commits synchronously. Registry-facing and mixed changes use a durable correction: the complete revised profile becomes active atomically once the registry applies it, and if registration then fails the brand reports action_required with that profile and its failureReasons. On a brand whose registration was not accepted, the same PATCH fixes and resubmits it; resubmitting unchanged details returns REGISTRATION_DETAILS_UNCHANGED. A brand’s profile type is immutable.
curl --request PATCH \
--url https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"ein": "<string>",
"email": "[email protected]",
"firstName": "<string>",
"lastName": "<string>",
"phone": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"website": "<string>"
},
"updateMask": [
"profile"
]
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}"
payload = {
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"ein": "<string>",
"email": "[email protected]",
"firstName": "<string>",
"lastName": "<string>",
"phone": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"website": "<string>"
},
"updateMask": ["profile"]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
profile: {
address: {
city: '<string>',
postalCode: '<string>',
state: '<string>',
street: '<string>'
},
companyName: '<string>',
displayName: '<string>',
ein: '<string>',
email: '[email protected]',
firstName: '<string>',
lastName: '<string>',
phone: '<string>',
supportEmail: '[email protected]',
type: 'organization',
website: '<string>'
},
updateMask: ['profile']
})
};
fetch('https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}', 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.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}",
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([
'profile' => [
'address' => [
'city' => '<string>',
'postalCode' => '<string>',
'state' => '<string>',
'street' => '<string>'
],
'companyName' => '<string>',
'displayName' => '<string>',
'ein' => '<string>',
'email' => '[email protected]',
'firstName' => '<string>',
'lastName' => '<string>',
'phone' => '<string>',
'supportEmail' => '[email protected]',
'type' => 'organization',
'website' => '<string>'
],
'updateMask' => [
'profile'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}"
payload := strings.NewReader("{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.patch("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/brands/{brandId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile\": {\n \"address\": {\n \"city\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\",\n \"street\": \"<string>\"\n },\n \"companyName\": \"<string>\",\n \"displayName\": \"<string>\",\n \"ein\": \"<string>\",\n \"email\": \"[email protected]\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"phone\": \"<string>\",\n \"supportEmail\": \"[email protected]\",\n \"type\": \"organization\",\n \"website\": \"<string>\"\n },\n \"updateMask\": [\n \"profile\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"capabilities": {
"canResubmit": true,
"editableFields": [
"<string>"
]
},
"createdAt": "2026-01-01T00:00:00.000Z",
"failureReasons": [
{
"fields": [
"profile.address"
],
"message": "Street address is not valid"
},
{
"fields": [
"profile.phone"
],
"message": "Mobile Phone Number not supported. Must be a Mobile Phone Number that can receive SMS messages."
}
],
"feedback": [
{
"category": "tax_id",
"message": "<string>"
}
],
"id": "<string>",
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"einLast4": "<string>",
"email": "[email protected]",
"entityType": "private_profit",
"firstName": "<string>",
"lastName": "<string>",
"phoneLast4": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"vertical": "agriculture",
"website": "<string>"
},
"status": "submitting",
"updatedAt": "2026-01-01T00:00:00.000Z",
"registeredAt": "2026-01-01T00:00:00.000Z",
"submittedAt": "2026-01-01T00:00:00.000Z"
}
}{
"data": {
"capabilities": {
"canResubmit": true,
"editableFields": [
"<string>"
]
},
"createdAt": "2026-01-01T00:00:00.000Z",
"failureReasons": [
{
"fields": [
"profile.address"
],
"message": "Street address is not valid"
},
{
"fields": [
"profile.phone"
],
"message": "Mobile Phone Number not supported. Must be a Mobile Phone Number that can receive SMS messages."
}
],
"feedback": [
{
"category": "tax_id",
"message": "<string>"
}
],
"id": "<string>",
"profile": {
"address": {
"city": "<string>",
"postalCode": "<string>",
"state": "<string>",
"street": "<string>"
},
"companyName": "<string>",
"displayName": "<string>",
"einLast4": "<string>",
"email": "[email protected]",
"entityType": "private_profit",
"firstName": "<string>",
"lastName": "<string>",
"phoneLast4": "<string>",
"supportEmail": "[email protected]",
"type": "organization",
"vertical": "agriculture",
"website": "<string>"
},
"status": "submitting",
"updatedAt": "2026-01-01T00:00:00.000Z",
"registeredAt": "2026-01-01T00:00:00.000Z",
"submittedAt": "2026-01-01T00:00:00.000Z"
}
}{
"code": "IDEMPOTENCY_KEY_REQUIRED",
"status": 400,
"title": "Idempotency Key Required",
"type": "https://photon.codes/docs/problems/idempotency-key-required"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "BRAND_NOT_FOUND",
"status": 404,
"title": "Brand Not Found",
"type": "https://photon.codes/docs/problems/brand-not-found"
}{
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"title": "Idempotency Conflict",
"type": "https://photon.codes/docs/problems/idempotency-conflict"
}{
"code": "PAYLOAD_TOO_LARGE",
"status": 413,
"title": "Payload Too Large",
"type": "https://photon.codes/docs/problems/payload-too-large"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "RATE_LIMITED",
"status": 429,
"title": "Too Many Requests",
"type": "https://photon.codes/docs/problems/rate-limited"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "SERVICE_FAILURE",
"status": 502,
"title": "Service Failure",
"type": "https://photon.codes/docs/problems/service-failure"
}{
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"title": "Service Temporarily Unavailable",
"type": "https://photon.codes/docs/problems/service-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Authorizations
Account Service Key, prefixed with pho_ask_, sent as Authorization: Bearer <key>. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.
Headers
Identifies one logical mutation across retries.
1 - 255^[\x21-\x7e]{1,255}$Path Parameters
^pho_brd_[0-9a-z]{26}$^pho_org_[0-9a-z]{26}$Body
Response
The updated brand after a local messaging-compliance-only change.
Show child attributes
Show child attributes
Was this page helpful?