curl --request POST \
--url https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"responses": [
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X2",
"value": "1985-04-12"
},
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3"
}
]
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
responses: [
{request_id: 'req_01HQ8XZ2M4N5P6R7S8T9V0W1X2', value: '1985-04-12'},
{request_id: 'req_01HQ8XZ2M4N5P6R7S8T9V0W1X3'}
]
})
};
fetch('https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information"
payload = { "responses": [{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X2",
"value": "1985-04-12"
}, { "request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3" }] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information"
payload := strings.NewReader("{\n \"responses\": [\n {\n \"request_id\": \"req_01HQ8XZ2M4N5P6R7S8T9V0W1X2\",\n \"value\": \"1985-04-12\"\n },\n {\n \"request_id\": \"req_01HQ8XZ2M4N5P6R7S8T9V0W1X3\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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))
}{
"application": {
"cardholder_id": "31TgvufZK3gDXBcA3BnSeLWiSn7",
"status": "under_review",
"requested_information": [
{
"id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"type": "document",
"description": "A government-issued photo ID for the cardholder.",
"status": "on_file"
}
],
"created_at": 1758211200,
"updated_at": 1758211260
},
"upload_targets": [
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"url": "https://uploads.example.com/cardholder-documents/req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"expires_at": 1758212160,
"accepted_content_types": [
"application/pdf",
"image/jpeg",
"image/png"
]
}
]
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Submit requested information for a cardholder's application
Answer the open request items on a cardholder’s enrollment application,
the ones listed under requested_information on
GET /cardholders/{cardholder_id}/application and announced by the
cardholder.information_requested webhook. Send one response per item
you are answering; items you omit stay open.
For field and question items, value carries the answer. For
document items, send the request_id alone: the response returns an
upload target for it, a short-lived URL to PUT the file to together
with the accepted content types. The file itself never travels through
this endpoint.
On success every answered item moves from missing to on_file, and
the reviewer moves the application on; the client is told through
cardholder.updated. The endpoint is only valid while the application
is in request_for_information.
Defined ahead of the review pipeline: the contract is final, but until
the pipeline that records answers exists, a well-formed submission for
a cardholder the caller owns answers 501.
curl --request POST \
--url https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"responses": [
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X2",
"value": "1985-04-12"
},
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3"
}
]
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
responses: [
{request_id: 'req_01HQ8XZ2M4N5P6R7S8T9V0W1X2', value: '1985-04-12'},
{request_id: 'req_01HQ8XZ2M4N5P6R7S8T9V0W1X3'}
]
})
};
fetch('https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information"
payload = { "responses": [{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X2",
"value": "1985-04-12"
}, { "request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3" }] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.sandbox.dakota.xyz/cardholders/{cardholder_id}/application/information"
payload := strings.NewReader("{\n \"responses\": [\n {\n \"request_id\": \"req_01HQ8XZ2M4N5P6R7S8T9V0W1X2\",\n \"value\": \"1985-04-12\"\n },\n {\n \"request_id\": \"req_01HQ8XZ2M4N5P6R7S8T9V0W1X3\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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))
}{
"application": {
"cardholder_id": "31TgvufZK3gDXBcA3BnSeLWiSn7",
"status": "under_review",
"requested_information": [
{
"id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"type": "document",
"description": "A government-issued photo ID for the cardholder.",
"status": "on_file"
}
],
"created_at": 1758211200,
"updated_at": 1758211260
},
"upload_targets": [
{
"request_id": "req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"url": "https://uploads.example.com/cardholder-documents/req_01HQ8XZ2M4N5P6R7S8T9V0W1X3",
"expires_at": 1758212160,
"accepted_content_types": [
"application/pdf",
"image/jpeg",
"image/png"
]
}
]
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Authorizations
Headers
Unique key to ensure request idempotency. If the same key is used within a certain time window, the original response will be returned instead of executing the request again.
Path Parameters
The cardholder's ID. KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Body
Answers to open request items on a cardholder's application.
One entry per request item being answered. A request_id may appear at most once.
1 - 50 elementsShow child attributes
Show child attributes
Response
The submission was accepted. The body carries the application as
GET /cardholders/{cardholder_id}/application now returns it, plus
an upload target for every document item answered.
The application after a submission, with any upload targets it produced.
The enrollment application behind a cardholder: its review state and anything a reviewer is currently waiting on.
The application status is narrower than the cardholder status — it describes only the review outcome, so it never carries lifecycle states like suspended or closed.
A suspended cardholder reads submitted, not approved: a cardholder may be suspended while still mid-onboarding, so suspension is not evidence that the enrollment was ever approved. Treat submitted there as "no decision is being asserted" rather than as proof the review is still running.
Show child attributes
Show child attributes
One target per document item answered. Omitted until document uploads are served; once they are, empty means none were answered.
Show child attributes
Show child attributes
Was this page helpful?

