Returns a paginated list of applications belonging to the organization associated with your API key, including accepted document metadata and presigned download URLs.
GET /api/external/applications
Authentication
Requires an API key with applications:read scope.
Authorization: Bearer klara_{client_id}.{secret}
Query parameters
Filter by application status. One of: created, sent, in_progress, submitted, review, approved, rejected.
Number of results per page. Min 1, max 100.
Pagination cursor returned as next_cursor from a previous response.
Response
Returns 200 OK with a paginated list.
List of application summaries. Show application properties
Configuration ID used for this application.
Current status of the application.
Name of the company being onboarded.
Show primary_contact properties
Email of the primary contact.
Display name of the primary contact.
Accepted documents for this application. Only documents with status: "accepted" are included. Field the document was uploaded for.
Always accepted (only accepted documents are returned).
Presigned S3 URL valid for 60 seconds.
ISO 8601 timestamp, or null if not yet submitted.
Whether more results are available.
Pass as the cursor query parameter to fetch the next page. null when there are no more results.
Examples
List all submitted applications
curl "https://app.klara-ai.com/api/external/applications?status=submitted&limit=10" \
-H "Authorization: Bearer klara_abc123def456.your-secret-here"
Response:
{
"applications" : [
{
"id" : "550e8400-e29b-41d4-a716-446655440000" ,
"config_id" : "kyc-standard" ,
"status" : "submitted" ,
"company_name" : "Acme Financial Ltd" ,
"primary_contact" : {
"email" : "sophie@acmefinancial.co.uk" ,
"name" : "Sophie Mitchell"
},
"documents" : [
{
"id" : "770e8400-e29b-41d4-a716-446655440002" ,
"field_id" : "bank_statement" ,
"file_name" : "acme-bank-statement-dec-2025.pdf" ,
"status" : "accepted" ,
"download_url" : "https://s3.amazonaws.com/..."
},
{
"id" : "880e8400-e29b-41d4-a716-446655440003" ,
"field_id" : "certificate_of_incorporation" ,
"file_name" : "acme-cert-incorporation.pdf" ,
"status" : "accepted" ,
"download_url" : "https://s3.amazonaws.com/..."
}
],
"created_at" : "2026-01-15T10:30:00.000Z" ,
"updated_at" : "2026-01-16T14:20:00.000Z" ,
"submitted_at" : "2026-01-16T14:20:00.000Z"
},
{
"id" : "661f9511-f3ac-52e5-b827-557766551111" ,
"config_id" : "kyc-standard" ,
"status" : "in_progress" ,
"company_name" : "Bright Ventures Ltd" ,
"primary_contact" : {
"email" : "james@brightventures.io" ,
"name" : "James Okafor"
},
"documents" : [],
"created_at" : "2026-01-14T08:15:00.000Z" ,
"updated_at" : "2026-01-14T09:45:00.000Z" ,
"submitted_at" : null
}
],
"has_more" : true ,
"next_cursor" : "2026-01-14T08:15:00.000Z|661f9511-f3ac-52e5-b827-557766551111"
}
Paginating through results
let cursor = null ;
do {
const url = new URL ( 'https://app.klara-ai.com/api/external/applications' );
url . searchParams . set ( 'limit' , '50' );
if ( cursor ) url . searchParams . set ( 'cursor' , cursor );
const res = await fetch ( url , {
headers: { 'Authorization' : 'Bearer klara_abc123def456.your-secret-here' }
});
const page = await res . json ();
for ( const app of page . applications ) {
// Process each application
}
cursor = page . next_cursor ;
} while ( cursor );
Errors
Status Error Cause 401Invalid API keyAPI key is invalid, expired, or inactive 401API key missing required scopes: applications:readKey lacks the required scope 500Internal server errorAn unexpected error occurred