Support

Get help and stay up to date with Credlab

← Back

API Access: Reading Credit Applications

How To
API Access

Read API

Base path: /api/v1/credit_applications

List credit applications

GET /api/v1/credit_applications?account_id=acct_1a2b3c4d5e6f&approval_status=approved&decided_since=2026-01-01T00:00:00Z&page=1
Authorization: token <token>

Query parameters:

Param Required Description
account_id yes The account to fetch applications for.
approval_status no Exact-match filter on decision status, e.g. approved, denied, withdrawn, pending, flagged.
decided_since no ISO 8601 timestamp. Returns only applications whose decision (approval_decided_at) is on or after this time. Useful for incremental polling/backfill.
page no Page number (results are paginated, 50 per page).

Results are ordered by created_at descending.

Example curl:

curl -G "https://credlab.app/api/v1/credit_applications" \
  -H "Authorization: token <token>" \
  --data-urlencode "account_id=acct_1a2b3c4d5e6f" \
  --data-urlencode "approval_status=approved" \
  --data-urlencode "decided_since=2026-01-01T00:00:00Z" \
  --data-urlencode "page=1"

Example response (200 OK):

{
  "data": [
    {
      "id": "ca_sample000000",
      "account": {"id": "acct_sample000000", "name": "Sample Account"},
      "status": "completed",
      "source": "online_application",
      "submitted_by": "Sample Submitter",
      "credit_requested": "10000",
      "language_submitted_in": "en",
      "created_at": "2026-01-01T00:00:00Z",
      "updated_at": "2026-01-02T00:00:00Z",
      "decision": {
        "approval_status": "approved",
        "approval_decided_at": "2026-01-02T00:00:00Z",
        "approval_amount": "5000",
        "credit_to_offer": "5000"
      },
      "applicant": {
        "name": "Sample Business Ltd",
        "operating_as": "Sample Business",
        "email": "accounts@sample.example",
        "phone": "555-555-0100",
        "fax": null,
        "website": "https://sample.example",
        "business_structure": "Corporation",
        "line_of_business": "Wholesale",
        "years_in_business": "12",
        "year_current_owner_took_over": "2015",
        "employs": "25",
        "annual_sales_volume": "2500000",
        "federal_tax_number": null,
        "provincial_or_state_tax_number": null,
        "business_under_a_different_name": null,
        "other_business_name": null,
        "locations": [
          {"address": "1 Sample St", "unit": null, "city": "Toronto", "province_or_state": "ON", "zip_or_postal": "M1M 1M1", "country": "Canada"}
        ],
        "contacts": [
          {"full_name": "Sam Sample", "title": "Controller", "email": "sam@sample.example", "phone": "555-555-0101"}
        ]
      },
      "references": [
        {
          "name": "Supplier Co",
          "contact_name": "Bob Buyer",
          "person_contacted": null,
          "person_contacted_title": null,
          "email": "ap@supplier.example",
          "phone": "555-555-0102",
          "fax": null,
          "terms": "Net 30",
          "credit_limit": "20000",
          "current_owing": "1500",
          "highest_credit": "18000",
          "account_age": "5 years",
          "last_sale": "2025-12-01",
          "status": null,
          "verified": true,
          "comments": null
        }
      ],
      "signators": [
        {"name": "Sam Sample", "title": "Controller", "email": "sam@sample.example", "address": null, "city": null, "province_or_state": null, "zip_or_postal": null, "is_personal_guarantor": false}
      ],
      "personal_guarantors": [],
      "additional_fields": {"mobile_phone": "555-555-0103"}
    }
  ],
  "pagination": {"page": 1, "pages": 1, "count": 1}
}

Field notes:

  • id is the credit application’s prefixed id (ca_...) — use this as your external key.
  • additional_fields is an allowlisted subset of account-specific custom fields; only known keys are included, and it may be {}.
  • Sensitive data (banking details, signature images, attachments, internal analysis fields) is intentionally never included in this payload.

Error responses:

Status Cause Body
401 Unauthorized missing/invalid token empty body
403 Forbidden the account has been deactivated {"error": "Account is deactivated"}
422 Unprocessable Content missing/invalid account_id {"error": "account_id is required and must be an account you belong to"}
422 Unprocessable Content decided_since is not a valid ISO 8601 timestamp {"error": "decided_since must be an ISO8601 timestamp"}

Fetch a single credit application

GET /api/v1/credit_applications/ca_1a2b3c4d5e6f?account_id=acct_1a2b3c4d5e6f
Authorization: token <token>

Example curl:

curl -G "https://credlab.app/api/v1/credit_applications/ca_1a2b3c4d5e6f" \
  -H "Authorization: token <token>" \
  --data-urlencode "account_id=acct_1a2b3c4d5e6f"

Example response (200 OK) — the same object shape as one entry of data above (not wrapped in an envelope):

{
  "id": "ca_sample000000",
  "account": {"id": "acct_sample000000", "name": "Sample Account"},
  "status": "completed",
  "source": "online_application",
  "submitted_by": "Sample Submitter",
  "credit_requested": "10000",
  "language_submitted_in": "en",
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-01-02T00:00:00Z",
  "decision": {
    "approval_status": "approved",
    "approval_decided_at": "2026-01-02T00:00:00Z",
    "approval_amount": "5000",
    "credit_to_offer": "5000"
  },
  "applicant": {
    "name": "Sample Business Ltd",
    "operating_as": "Sample Business",
    "email": "accounts@sample.example",
    "phone": "555-555-0100",
    "fax": null,
    "website": "https://sample.example",
    "business_structure": "Corporation",
    "line_of_business": "Wholesale",
    "years_in_business": "12",
    "year_current_owner_took_over": "2015",
    "employs": "25",
    "annual_sales_volume": "2500000",
    "federal_tax_number": null,
    "provincial_or_state_tax_number": null,
    "business_under_a_different_name": null,
    "other_business_name": null,
    "locations": [
      {"address": "1 Sample St", "unit": null, "city": "Toronto", "province_or_state": "ON", "zip_or_postal": "M1M 1M1", "country": "Canada"}
    ],
    "contacts": [
      {"full_name": "Sam Sample", "title": "Controller", "email": "sam@sample.example", "phone": "555-555-0101"}
    ]
  },
  "references": [
    {
      "name": "Supplier Co",
      "contact_name": "Bob Buyer",
      "person_contacted": null,
      "person_contacted_title": null,
      "email": "ap@supplier.example",
      "phone": "555-555-0102",
      "fax": null,
      "terms": "Net 30",
      "credit_limit": "20000",
      "current_owing": "1500",
      "highest_credit": "18000",
      "account_age": "5 years",
      "last_sale": "2025-12-01",
      "status": null,
      "verified": true,
      "comments": null
    }
  ],
  "signators": [
    {"name": "Sam Sample", "title": "Controller", "email": "sam@sample.example", "address": null, "city": null, "province_or_state": null, "zip_or_postal": null, "is_personal_guarantor": false}
  ],
  "personal_guarantors": [],
  "additional_fields": {"mobile_phone": "555-555-0103"}
}

Error responses:

Status Cause Body
401 Unauthorized missing/invalid token empty body
403 Forbidden the account has been deactivated {"error": "Account is deactivated"}
422 Unprocessable Content missing/invalid account_id {"error": "account_id is required and must be an account you belong to"}
404 Not Found no application with that id in the given account (including one that belongs to a different account) {"error": "Credit application not found"}