curl --request POST \
--url https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Requester-Organization-ID: <requester-organization-id>' \
--header 'Target-Organization-ID: <target-organization-id>' \
--data '
{
"financial_documents": [],
"additional_documents": "One year cashflow statement",
"message": "Please provide updated financials"
}
'import requests
url = "https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes"
payload = {
"financial_documents": [],
"additional_documents": "One year cashflow statement",
"message": "Please provide updated financials"
}
headers = {
"Requester-Organization-ID": "<requester-organization-id>",
"Target-Organization-ID": "<target-organization-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Requester-Organization-ID': '<requester-organization-id>',
'Target-Organization-ID': '<target-organization-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
financial_documents: [],
additional_documents: 'One year cashflow statement',
message: 'Please provide updated financials'
})
};
fetch('https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes', 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.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes",
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([
'financial_documents' => [
],
'additional_documents' => 'One year cashflow statement',
'message' => 'Please provide updated financials'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Requester-Organization-ID: <requester-organization-id>",
"Target-Organization-ID: <target-organization-id>"
],
]);
$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.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes"
payload := strings.NewReader("{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Requester-Organization-ID", "<requester-organization-id>")
req.Header.Add("Target-Organization-ID", "<target-organization-id>")
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://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes")
.header("Requester-Organization-ID", "<requester-organization-id>")
.header("Target-Organization-ID", "<target-organization-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Requester-Organization-ID"] = '<requester-organization-id>'
request["Target-Organization-ID"] = '<target-organization-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b2a9f8d3-7b7d-4c1b-a2a1-9c2d0b123456",
"credit_application_type": "credit_terms",
"forwarder_id": "d2f8e6c4-1b3c-4a7b-9d2f-3b1e0a987654",
"shipper_id": "c1e2f3b4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
"status": "pending",
"created_at": "2025-01-01T12:00:00.123456",
"updated_at": "2025-01-02T12:00:00.123456"
}{
"detail": [
{
"loc": [],
"msg": "Unsupported CRUD operation!",
"type": "request",
"code": "unsupported_crud_operation"
},
{
"loc": [],
"msg": "Cannot change credit application status to 'needs action' from the current status!",
"type": "request",
"code": "credit_application_request_changes_invalid_status_transition"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Token is required!",
"type": "token",
"code": "token_required"
},
{
"loc": [],
"msg": "The token has expired!",
"type": "token",
"code": "token_expired"
},
{
"loc": [],
"msg": "Invalid token!",
"type": "token",
"code": "invalid_token"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Access denied!",
"type": "request",
"code": "access_denied"
},
{
"loc": [],
"msg": "Shipper does not have access to perform this action on the credit application!",
"type": "request",
"code": "credit_application_shipper_access_denied"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Account not found!",
"type": "request",
"code": "account_not_found"
},
{
"loc": [],
"msg": "Credit application not found!",
"type": "request",
"code": "credit_application_not_found"
},
{
"loc": [],
"msg": "Organization not found!",
"type": "request",
"code": "organization_not_found"
}
]
}{
"detail": [
{
"loc": [],
"msg": "The account is in the process of being deleted! The Account's email can only be reused after its data has been completely deleted. The removal process may take up to 24 hours.",
"type": "request",
"code": "account_being_deleted"
},
{
"loc": [],
"msg": "The organization is in the process of being deleted! The removal process may take up to 24 hours.",
"type": "request",
"code": "organization_being_deleted"
}
]
}{
"detail": [
{
"loc": [],
"msg": "The request is too large!",
"type": "request",
"code": "request_too_large"
}
]
}{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string",
"code": "validation_error"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Error processing request, please try later!",
"type": "try_later",
"code": "internal_conflict_error"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Service is under maintenance, please try later!",
"type": "maintanance",
"code": "service_under_maintenance"
}
]
}Request changes for credit application
Request changes for a credit application from the submitting organization.
Authorization scenarios
| Guest | Host | Self |
|---|---|---|
| ❌ | ❌ | ✅ |
curl --request POST \
--url https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Requester-Organization-ID: <requester-organization-id>' \
--header 'Target-Organization-ID: <target-organization-id>' \
--data '
{
"financial_documents": [],
"additional_documents": "One year cashflow statement",
"message": "Please provide updated financials"
}
'import requests
url = "https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes"
payload = {
"financial_documents": [],
"additional_documents": "One year cashflow statement",
"message": "Please provide updated financials"
}
headers = {
"Requester-Organization-ID": "<requester-organization-id>",
"Target-Organization-ID": "<target-organization-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Requester-Organization-ID': '<requester-organization-id>',
'Target-Organization-ID': '<target-organization-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
financial_documents: [],
additional_documents: 'One year cashflow statement',
message: 'Please provide updated financials'
})
};
fetch('https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes', 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.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes",
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([
'financial_documents' => [
],
'additional_documents' => 'One year cashflow statement',
'message' => 'Please provide updated financials'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Requester-Organization-ID: <requester-organization-id>",
"Target-Organization-ID: <target-organization-id>"
],
]);
$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.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes"
payload := strings.NewReader("{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Requester-Organization-ID", "<requester-organization-id>")
req.Header.Add("Target-Organization-ID", "<target-organization-id>")
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://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes")
.header("Requester-Organization-ID", "<requester-organization-id>")
.header("Target-Organization-ID", "<target-organization-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mycreditapp.ai/v1-beta/credit-applications/{credit_application_id}/statuses/request-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Requester-Organization-ID"] = '<requester-organization-id>'
request["Target-Organization-ID"] = '<target-organization-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"financial_documents\": [],\n \"additional_documents\": \"One year cashflow statement\",\n \"message\": \"Please provide updated financials\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b2a9f8d3-7b7d-4c1b-a2a1-9c2d0b123456",
"credit_application_type": "credit_terms",
"forwarder_id": "d2f8e6c4-1b3c-4a7b-9d2f-3b1e0a987654",
"shipper_id": "c1e2f3b4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
"status": "pending",
"created_at": "2025-01-01T12:00:00.123456",
"updated_at": "2025-01-02T12:00:00.123456"
}{
"detail": [
{
"loc": [],
"msg": "Unsupported CRUD operation!",
"type": "request",
"code": "unsupported_crud_operation"
},
{
"loc": [],
"msg": "Cannot change credit application status to 'needs action' from the current status!",
"type": "request",
"code": "credit_application_request_changes_invalid_status_transition"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Token is required!",
"type": "token",
"code": "token_required"
},
{
"loc": [],
"msg": "The token has expired!",
"type": "token",
"code": "token_expired"
},
{
"loc": [],
"msg": "Invalid token!",
"type": "token",
"code": "invalid_token"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Access denied!",
"type": "request",
"code": "access_denied"
},
{
"loc": [],
"msg": "Shipper does not have access to perform this action on the credit application!",
"type": "request",
"code": "credit_application_shipper_access_denied"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Account not found!",
"type": "request",
"code": "account_not_found"
},
{
"loc": [],
"msg": "Credit application not found!",
"type": "request",
"code": "credit_application_not_found"
},
{
"loc": [],
"msg": "Organization not found!",
"type": "request",
"code": "organization_not_found"
}
]
}{
"detail": [
{
"loc": [],
"msg": "The account is in the process of being deleted! The Account's email can only be reused after its data has been completely deleted. The removal process may take up to 24 hours.",
"type": "request",
"code": "account_being_deleted"
},
{
"loc": [],
"msg": "The organization is in the process of being deleted! The removal process may take up to 24 hours.",
"type": "request",
"code": "organization_being_deleted"
}
]
}{
"detail": [
{
"loc": [],
"msg": "The request is too large!",
"type": "request",
"code": "request_too_large"
}
]
}{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string",
"code": "validation_error"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Error processing request, please try later!",
"type": "try_later",
"code": "internal_conflict_error"
}
]
}{
"detail": [
{
"loc": [],
"msg": "Service is under maintenance, please try later!",
"type": "maintanance",
"code": "service_under_maintenance"
}
]
}Authorizations
Bearer authentication using a JWT token. Provide a valid access token. Authorization header format: Authorization: Bearer <token>.
Headers
The unique identifier of the organization making the request. This ID is used to authorize the requester within the system.
"054b4106-174b-46b0-97f8-86d8d7b6f0af"
The unique identifier of the organization that is the target of the request.
The Target-Organization-ID may match the Requester-Organization-ID if the requester accesses their own resources.
If the Target-Organization-ID differs from the Requester-Organization-ID, the requester can access third-party resources if the requester has a connection with the target organization and is authorized to perform such actions.
"123e4567-e89b-12d3-a456-426614174000"
Path Parameters
Unique identifier of the credit application
"b2a9f8d3-7b7d-4c1b-a2a1-9c2d0b123456"
Body
Type of financial analysis required
full, partial, none List of financial documents required
1year_end_financial, interim_financial, bank_statement, financial_package Additional supporting documents
1"One year cashflow statement"
Optional message for the applicant
1 - 500"Please provide updated financials"
Response
Successful Response
Unique identifier of the credit application
"b2a9f8d3-7b7d-4c1b-a2a1-9c2d0b123456"
Type of credit application
credit_terms, trade_finance, factoring Unique identifier of the owner organization
"d2f8e6c4-1b3c-4a7b-9d2f-3b1e0a987654"
Unique identifier of the guest organization [blocked]
"c1e2f3b4-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
Current status of the credit application
pending, internal_review, external_review, needs_action, approved, finalized, declined, rejected, expired, sign_document_created, sign_document_in_progress, sign_document_completed, sign_document_expired, sign_document_canceled, sign_document_declined, sign_document_process_failed Timestamp when the credit application was created
"2025-01-01T12:00:00.123456"
Timestamp when the credit application was last updated
"2025-01-02T12:00:00.123456"