Update Identity
Modify existing identity of an existing client
curl --request PATCH \
--url https://app.api.getdal.sa/services/crm/identities/{identityId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-tenant: <x-tenant>' \
--data '
{
"number": "A123456789",
"subtype": "<string>",
"expiresAt": "2030-12-31",
"issuingCountryCode": "SA",
"documentIds": [
"<string>"
]
}
'import requests
url = "https://app.api.getdal.sa/services/crm/identities/{identityId}"
payload = {
"number": "A123456789",
"subtype": "<string>",
"expiresAt": "2030-12-31",
"issuingCountryCode": "SA",
"documentIds": ["<string>"]
}
headers = {
"x-tenant": "<x-tenant>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'x-tenant': '<x-tenant>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
number: 'A123456789',
subtype: '<string>',
expiresAt: '2030-12-31',
issuingCountryCode: 'SA',
documentIds: ['<string>']
})
};
fetch('https://app.api.getdal.sa/services/crm/identities/{identityId}', 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://app.api.getdal.sa/services/crm/identities/{identityId}",
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([
'number' => 'A123456789',
'subtype' => '<string>',
'expiresAt' => '2030-12-31',
'issuingCountryCode' => 'SA',
'documentIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-tenant: <x-tenant>"
],
]);
$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://app.api.getdal.sa/services/crm/identities/{identityId}"
payload := strings.NewReader("{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-tenant", "<x-tenant>")
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.patch("https://app.api.getdal.sa/services/crm/identities/{identityId}")
.header("x-tenant", "<x-tenant>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.api.getdal.sa/services/crm/identities/{identityId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-tenant"] = '<x-tenant>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"verifiedAt": "2024-06-18",
"expiresAt": "2030-12-31",
"type": "Passport",
"subtype": "Iqama",
"number": "A123456789",
"issuingCountryCode": "SA",
"selfie": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"name": "logo.png",
"mimeType": "image/png",
"size": "1436",
"createdBy": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"email": "<string>",
"displayName": "<string>",
"roleId": "<string>"
}
},
"documents": [
{
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"name": "logo.png",
"mimeType": "image/png",
"size": "1436",
"createdBy": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"email": "<string>",
"displayName": "<string>",
"roleId": "<string>"
}
}
],
"verification": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"status": "Pending",
"source": "Manual"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
},
"validationErrors": [
"<string>"
]
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}Authorizations
Headers
Tenant identifier
Path Parameters
Body
Type of identity document
NationalIdentity, ResidencyPermit, CommercialRegistration, UnifiedNumber, Passport, GccCompany, NonProfit, Waqf, LicenseNumber, DrivingLicense, DigitalId, Other Identity document number
"A123456789"
Identity document subtype
ID expiration date (YYYY-MM-DD)
"2030-12-31"
Issuing country code (ISO 3166-1 alpha-2)
"SA"
Attachment IDs of supporting ID documents (e.g. scanned ID front/back, passport). At least one is required.
Response
Success
Dal's database Id
"b50c7893-cd88-42bd-9fdd-b94f493315f9"
Create timestamp
"2025-12-02 12:00:00.000"
Update timestamp
"2025-12-04 12:00:00.000"
ID verification date (YYYY-MM-DD)
"2024-06-18"
ID expiration date (YYYY-MM-DD)
"2030-12-31"
Type of identity document
NationalIdentity, ResidencyPermit, None, CommercialRegistration, UnifiedNumber, Passport, GccCompany, NonProfit, Waqf, LicenseNumber, DrivingLicense, DigitalId, Other "Passport"
The ID subtype as extracted from international verification (e.g. "UAE Driving License").
"Iqama"
Identity document number
"A123456789"
ID issuing country two-letter code
"SA"
ID selfie image
Show child attributes
Show child attributes
ID documents
Show child attributes
Show child attributes
Verification linked to this ID (pending manual proposal or completed attempt)
Show child attributes
Show child attributes
curl --request PATCH \
--url https://app.api.getdal.sa/services/crm/identities/{identityId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-tenant: <x-tenant>' \
--data '
{
"number": "A123456789",
"subtype": "<string>",
"expiresAt": "2030-12-31",
"issuingCountryCode": "SA",
"documentIds": [
"<string>"
]
}
'import requests
url = "https://app.api.getdal.sa/services/crm/identities/{identityId}"
payload = {
"number": "A123456789",
"subtype": "<string>",
"expiresAt": "2030-12-31",
"issuingCountryCode": "SA",
"documentIds": ["<string>"]
}
headers = {
"x-tenant": "<x-tenant>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'x-tenant': '<x-tenant>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
number: 'A123456789',
subtype: '<string>',
expiresAt: '2030-12-31',
issuingCountryCode: 'SA',
documentIds: ['<string>']
})
};
fetch('https://app.api.getdal.sa/services/crm/identities/{identityId}', 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://app.api.getdal.sa/services/crm/identities/{identityId}",
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([
'number' => 'A123456789',
'subtype' => '<string>',
'expiresAt' => '2030-12-31',
'issuingCountryCode' => 'SA',
'documentIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-tenant: <x-tenant>"
],
]);
$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://app.api.getdal.sa/services/crm/identities/{identityId}"
payload := strings.NewReader("{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-tenant", "<x-tenant>")
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.patch("https://app.api.getdal.sa/services/crm/identities/{identityId}")
.header("x-tenant", "<x-tenant>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.api.getdal.sa/services/crm/identities/{identityId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-tenant"] = '<x-tenant>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"number\": \"A123456789\",\n \"subtype\": \"<string>\",\n \"expiresAt\": \"2030-12-31\",\n \"issuingCountryCode\": \"SA\",\n \"documentIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"verifiedAt": "2024-06-18",
"expiresAt": "2030-12-31",
"type": "Passport",
"subtype": "Iqama",
"number": "A123456789",
"issuingCountryCode": "SA",
"selfie": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"name": "logo.png",
"mimeType": "image/png",
"size": "1436",
"createdBy": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"email": "<string>",
"displayName": "<string>",
"roleId": "<string>"
}
},
"documents": [
{
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"name": "logo.png",
"mimeType": "image/png",
"size": "1436",
"createdBy": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"email": "<string>",
"displayName": "<string>",
"roleId": "<string>"
}
}
],
"verification": {
"id": "b50c7893-cd88-42bd-9fdd-b94f493315f9",
"createdAt": "2025-12-02 12:00:00.000",
"updatedAt": "2025-12-04 12:00:00.000",
"status": "Pending",
"source": "Manual"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
},
"validationErrors": [
"<string>"
]
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}{
"errorCode": "NOT_FOUND",
"message": {
"en": "The requested record was not found",
"ar": "لم يتم العثور على السجل المطلوب"
}
}