curl --request POST \
--url https://{host}/Agent/Legal/AddIdAttachment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Referer: <referer>' \
--data '
{
"keyId": "<string>",
"legalId": "<string>",
"nonce": "<string>",
"keySignature": "<string>",
"requestSignature": "<string>",
"attachmentBase64": "<string>",
"attachmentFileName": "<string>",
"attachmentContentType": "<string>"
}
'import requests
url = "https://{host}/Agent/Legal/AddIdAttachment"
payload = {
"keyId": "<string>",
"legalId": "<string>",
"nonce": "<string>",
"keySignature": "<string>",
"requestSignature": "<string>",
"attachmentBase64": "<string>",
"attachmentFileName": "<string>",
"attachmentContentType": "<string>"
}
headers = {
"Referer": "<referer>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Referer: '<referer>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
keyId: '<string>',
legalId: '<string>',
nonce: '<string>',
keySignature: '<string>',
requestSignature: '<string>',
attachmentBase64: '<string>',
attachmentFileName: '<string>',
attachmentContentType: '<string>'
})
};
fetch('https://{host}/Agent/Legal/AddIdAttachment', 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://{host}/Agent/Legal/AddIdAttachment",
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([
'keyId' => '<string>',
'legalId' => '<string>',
'nonce' => '<string>',
'keySignature' => '<string>',
'requestSignature' => '<string>',
'attachmentBase64' => '<string>',
'attachmentFileName' => '<string>',
'attachmentContentType' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Referer: <referer>"
],
]);
$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://{host}/Agent/Legal/AddIdAttachment"
payload := strings.NewReader("{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Referer", "<referer>")
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://{host}/Agent/Legal/AddIdAttachment")
.header("Referer", "<referer>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/Agent/Legal/AddIdAttachment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Referer"] = '<referer>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"Identity": {}
}Add Id Attachment
Allows the client to add an attachment to a Legal Identity application.
curl --request POST \
--url https://{host}/Agent/Legal/AddIdAttachment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Referer: <referer>' \
--data '
{
"keyId": "<string>",
"legalId": "<string>",
"nonce": "<string>",
"keySignature": "<string>",
"requestSignature": "<string>",
"attachmentBase64": "<string>",
"attachmentFileName": "<string>",
"attachmentContentType": "<string>"
}
'import requests
url = "https://{host}/Agent/Legal/AddIdAttachment"
payload = {
"keyId": "<string>",
"legalId": "<string>",
"nonce": "<string>",
"keySignature": "<string>",
"requestSignature": "<string>",
"attachmentBase64": "<string>",
"attachmentFileName": "<string>",
"attachmentContentType": "<string>"
}
headers = {
"Referer": "<referer>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Referer: '<referer>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
keyId: '<string>',
legalId: '<string>',
nonce: '<string>',
keySignature: '<string>',
requestSignature: '<string>',
attachmentBase64: '<string>',
attachmentFileName: '<string>',
attachmentContentType: '<string>'
})
};
fetch('https://{host}/Agent/Legal/AddIdAttachment', 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://{host}/Agent/Legal/AddIdAttachment",
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([
'keyId' => '<string>',
'legalId' => '<string>',
'nonce' => '<string>',
'keySignature' => '<string>',
'requestSignature' => '<string>',
'attachmentBase64' => '<string>',
'attachmentFileName' => '<string>',
'attachmentContentType' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Referer: <referer>"
],
]);
$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://{host}/Agent/Legal/AddIdAttachment"
payload := strings.NewReader("{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Referer", "<referer>")
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://{host}/Agent/Legal/AddIdAttachment")
.header("Referer", "<referer>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/Agent/Legal/AddIdAttachment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Referer"] = '<referer>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keyId\": \"<string>\",\n \"legalId\": \"<string>\",\n \"nonce\": \"<string>\",\n \"keySignature\": \"<string>\",\n \"requestSignature\": \"<string>\",\n \"attachmentBase64\": \"<string>\",\n \"attachmentFileName\": \"<string>\",\n \"attachmentContentType\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"Identity": {}
}Overview
Allows the client to add an attachment to a Legal Identity application.Authentication
Requires a valid JWT bearer token. Complete uploads while the application is Created, then call ReadyForApproval to start review. The server signs each attachment; no separate SignData call is needed. Follow the identity application guide for complete signed HTTP requests.Notes
This endpoint uses the request schema notation described in Pattern matching.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Your application's HTTPS URL, for example https://app.example.com/. Include this header on every Agent API request, including backend calls, login, and account creation. Browser clients must use a referrer policy that sends the application origin. See /neuron-api/api-basics#required-referer-header.
Body
The signing key used for this identity application.
Identity.id of your application, which must still be in Created state.
A fresh random nonce of at least 32 characters. Do not reuse it.
Base64 HMAC-SHA-256 of the key message using the key password. See the upload guide for the exact message.
Base64 HMAC-SHA-256 binding the file bytes, filename, content type, and legalId to the request. See the upload guide for the exact field order.
Base64-encoded file bytes, without a data URL prefix. Send one file per request.
Evidence filename recognized by the reviewer, such as ProfilePhoto.jpg or IdCardFront.png.
Media type matching the file bytes, such as image/jpeg or image/png.
Response
Success