# Lokta API > The REST API of Lokta, the agentic loan servicing platform: 114 endpoints across 14 sections, one page each. Every request authenticates with HTTP Basic and names its tenant. Each page below has a Markdown twin at the URL shown. The OpenAPI document is the source of all of it, and the conventions page covers what holds across every endpoint. ## Start here - [API conventions](https://developer.lokta.ai/conventions.html): auth, the tenant header, dates and locale, commands, pagination, errors and idempotency. Read once, applies everywhere. - [Reference index](https://developer.lokta.ai/api/index.md): every section and how many endpoints each holds. - [OpenAPI document](https://developer.lokta.ai/openapi.curated.json): the curated spec both the pages and the explorer render. - [Full reference in one file](https://developer.lokta.ai/llms-full.txt): every endpoint below concatenated, for a single fetch. ## Non-functional ### Authentication How a session begins: HTTP Basic authentication against the tenant. - [Authentication: all 1 endpoint](https://developer.lokta.ai/api/authentication.md): the section index, one line per endpoint. - [Verify authentication](https://developer.lokta.ai/api/authentication/authenticate.md): POST `/v1/authentication`. Authenticates the credentials provided and returns the set roles and permissions allowed. ### User Management Application user accounts: creation, updates and passwords. - [User Management: all 7 endpoints](https://developer.lokta.ai/api/user-management.md): the section index, one line per endpoint. - [Retrieve list of users](https://developer.lokta.ai/api/user-management/retrieve-all-users.md): GET `/v1/users`. - [Create a User](https://developer.lokta.ai/api/user-management/create-user.md): POST `/v1/users`. Note: Password information is not required (or processed). Password details at present are auto-generated and then sent to the email account given (which is why it can take a few seconds to complete). - [Retrieve User Details Template](https://developer.lokta.ai/api/user-management/retrieve-template-user.md): GET `/v1/users/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a User](https://developer.lokta.ai/api/user-management/retrieve-one-user.md): GET `/v1/users/{userId}`. - [Update a User](https://developer.lokta.ai/api/user-management/update-user.md): PUT `/v1/users/{userId}`. - [Delete a User](https://developer.lokta.ai/api/user-management/delete-user.md): DELETE `/v1/users/{userId}`. Removes the user and the associated roles and permissions. - [Change the password of a User](https://developer.lokta.ai/api/user-management/change-password-user.md): POST `/v1/users/{userId}/pwd`. When updating a password you must provide the repeatPassword parameter also. ### Roles & Permissions What a user may do: roles and the permission catalogue. - [Roles & Permissions: all 8 endpoints](https://developer.lokta.ai/api/roles-permissions.md): the section index, one line per endpoint. - [List Application Permissions](https://developer.lokta.ai/api/roles-permissions/retrieve-all-permissions.md): GET `/v1/permissions`. makerCheckerableoptional, Values are true, false. Default is false. - [List Roles](https://developer.lokta.ai/api/roles-permissions/retrieve-all-roles.md): GET `/v1/roles`. - [Create a New Role](https://developer.lokta.ai/api/roles-permissions/create-role.md): POST `/v1/roles`. - [Retrieve a Role](https://developer.lokta.ai/api/roles-permissions/retrieve-one-role.md): GET `/v1/roles/{roleId}`. - [Update a Role](https://developer.lokta.ai/api/roles-permissions/update-role.md): PUT `/v1/roles/{roleId}`. - [Delete a Role](https://developer.lokta.ai/api/roles-permissions/delete-role.md): DELETE `/v1/roles/{roleId}`. Description : Delete the role in case role is not associated with any users. - [Retrieve a Role's Permissions](https://developer.lokta.ai/api/roles-permissions/retrieve-role-permissions.md): GET `/v1/roles/{roleId}/permissions`. - [Update a Role's Permissions](https://developer.lokta.ai/api/roles-permissions/update-role-permissions.md): PUT `/v1/roles/{roleId}/permissions`. ### Staff Branch staff and loan officers. - [Staff: all 4 endpoints](https://developer.lokta.ai/api/staff.md): the section index, one line per endpoint. - [Retrieve Staff](https://developer.lokta.ai/api/staff/retrieve-all-staff.md): GET `/v1/staff`. By default it Returns all the ACTIVE Staff. Otherwise a status can be provided like e.g. status=INACTIVE,. - [Create a staff member](https://developer.lokta.ai/api/staff/create-staff.md): POST `/v1/staff`. - [Retrieve a Staff Member](https://developer.lokta.ai/api/staff/retrieve-one-staff.md): GET `/v1/staff/{staffId}`. - [Update a Staff Member](https://developer.lokta.ai/api/staff/update-staff.md): PUT `/v1/staff/{staffId}`. ### Codes & Code Values System and custom lookup lists that dropdowns are built from. - [Codes & Code Values: all 8 endpoints](https://developer.lokta.ai/api/codes-code-values.md): the section index, one line per endpoint. - [Retrieve Codes](https://developer.lokta.ai/api/codes-code-values/retrieve-all-codes.md): GET `/v1/codes`. - [Create a Code](https://developer.lokta.ai/api/codes-code-values/create-code.md): POST `/v1/codes`. Creates a code. Codes created through api are always 'user defined' and so system defined is marked as false. - [Retrieve a Code](https://developer.lokta.ai/api/codes-code-values/retrieve-one-code-by-name.md): GET `/v1/codes/name/{codeName}`. - [List Code Values](https://developer.lokta.ai/api/codes-code-values/retrieve-all-code-values-by-code-name.md): GET `/v1/codes/name/{codeName}/codevalues`. Returns the list of Code Values for a given Code. - [Retrieve a Code](https://developer.lokta.ai/api/codes-code-values/retrieve-one-code.md): GET `/v1/codes/{codeId}`. - [Update a Code](https://developer.lokta.ai/api/codes-code-values/update-code.md): PUT `/v1/codes/{codeId}`. Updates the details of a code if it is not system defined. - [Delete a Code](https://developer.lokta.ai/api/codes-code-values/delete-code.md): DELETE `/v1/codes/{codeId}`. Deletes a code if it is not system defined. - [List Code Values](https://developer.lokta.ai/api/codes-code-values/retrieve-all-code-values.md): GET `/v1/codes/{codeId}/codevalues`. Returns the list of Code Values for a given Code. ## Functional ### Customers The people and businesses who borrow: onboarding, identifiers, addresses, family members, charges and search. - [Customers: all 24 endpoints](https://developer.lokta.ai/api/customers.md): the section index, one line per endpoint. - [Retrieve client address template](https://developer.lokta.ai/api/customers/retrieve-template-client-address.md): GET `/v1/client/addresses/template`. - [List all addresses for a Client](https://developer.lokta.ai/api/customers/retrieve-all-client-addresses.md): GET `/v1/client/{clientid}/addresses`. - [Create an address for a Client](https://developer.lokta.ai/api/customers/create-client-address.md): POST `/v1/client/{clientid}/addresses`. - [Update an address for a Client](https://developer.lokta.ai/api/customers/update-client-address.md): PUT `/v1/client/{clientid}/addresses`. All the address fields can be updated by using update client address API. - [List Clients](https://developer.lokta.ai/api/customers/retrieve-all-clients.md): GET `/v1/clients`. The list capability of clients can support pagination and sorting. - [Create a Client](https://developer.lokta.ai/api/customers/create-client.md): POST `/v1/clients`. Mandatory Fields: firstname and lastname OR fullname, officeId, active=true and activationDate OR active=false, if(address enabled) address. - [Retrieve Client Details Template](https://developer.lokta.ai/api/customers/retrieve-template-client.md): GET `/v1/clients/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Client](https://developer.lokta.ai/api/customers/retrieve-one-client.md): GET `/v1/clients/{clientId}`. - [Update a Client](https://developer.lokta.ai/api/customers/update-client.md): PUT `/v1/clients/{clientId}`. Note: You can update any of the basic attributes of a client (but not its associations) using this API. - [Delete a Client](https://developer.lokta.ai/api/customers/delete-client.md): DELETE `/v1/clients/{clientId}`. If a client is in Pending state, you are allowed to Delete it. The delete is a 'hard delete' and cannot be recovered from. Once clients become active or have loans or savings associated with them, you cannot delete the client but you may Close the client if they have left the program. - [Retrieve client accounts overview](https://developer.lokta.ai/api/customers/retrieve-all-client-accounts.md): GET `/v1/clients/{clientId}/accounts`. An example of how a loan portfolio summary can be provided. This is requested in a specific use case of the community application. - [List all client family members](https://developer.lokta.ai/api/customers/retrieve-all-client-family-members.md): GET `/v1/clients/{clientId}/familymembers`. - [Add a client family member](https://developer.lokta.ai/api/customers/create-client-family-member.md): POST `/v1/clients/{clientId}/familymembers`. - [Retrieve client family member template](https://developer.lokta.ai/api/customers/retrieve-template-client-family-member.md): GET `/v1/clients/{clientId}/familymembers/template`. - [Retrieve a client family member](https://developer.lokta.ai/api/customers/retrieve-one-client-family-member.md): GET `/v1/clients/{clientId}/familymembers/{familyMemberId}`. - [Update a client family member](https://developer.lokta.ai/api/customers/update-client-family-member.md): PUT `/v1/clients/{clientId}/familymembers/{familyMemberId}`. - [Delete a client family member](https://developer.lokta.ai/api/customers/delete-client-family-member.md): DELETE `/v1/clients/{clientId}/familymembers/{familyMemberId}`. - [List all Identifiers for a Client](https://developer.lokta.ai/api/customers/retrieve-all-client-identifiers.md): GET `/v1/clients/{clientId}/identifiers`. - [Create an Identifier for a Client](https://developer.lokta.ai/api/customers/create-client-identifier.md): POST `/v1/clients/{clientId}/identifiers`. - [Retrieve Client Identifier Details Template](https://developer.lokta.ai/api/customers/retrieve-template-client-identifier.md): GET `/v1/clients/{clientId}/identifiers/template`. This is a convenience resource useful for building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Client Identifier](https://developer.lokta.ai/api/customers/retrieve-one-client-identifier.md): GET `/v1/clients/{clientId}/identifiers/{identifierId}`. - [Update a Client Identifier](https://developer.lokta.ai/api/customers/update-client-identifier.md): PUT `/v1/clients/{clientId}/identifiers/{identifierId}`. - [Delete a Client Identifier](https://developer.lokta.ai/api/customers/delete-client-identifier.md): DELETE `/v1/clients/{clientId}/identifiers/{identifierId}`. - [Search Clients by text](https://developer.lokta.ai/api/customers/search-clients-by-text.md): POST `/v2/clients/search`. ### Loan Accounts A loan from application through closure: create, approve, disburse, and manage the account lifecycle. - [Loan Accounts: all 8 endpoints](https://developer.lokta.ai/api/loan-accounts.md): the section index, one line per endpoint. - [List Loans](https://developer.lokta.ai/api/loan-accounts/retrieve-all-loans.md): GET `/v1/loans`. The list capability of loans can support pagination and sorting. - [Calculate loan repayment schedule | Submit a new Loan Application](https://developer.lokta.ai/api/loan-accounts/calculate-or-submit-loan-application.md): POST `/v1/loans`. It calculates the loan repayment Schedule. - [Retrieve Loan Details Template](https://developer.lokta.ai/api/loan-accounts/retrieve-template-loan.md): GET `/v1/loans/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Loan](https://developer.lokta.ai/api/loan-accounts/retrieve-one-loan.md): GET `/v1/loans/{loanId}`. Note: template=true parameter doesn't apply to this resource.Example Requests. - [Approve Loan Application | Recover Loan Guarantee | Undo Loan Application Approval | Assign a Loan Officer | Unassign a Loan Officer | Reject Loan Application | Applicant Withdraws from Loan Application | Disburse Loan Disburse Loan To Savings Account | Undo Loan Disbursal](https://developer.lokta.ai/api/loan-accounts/handle-commands-loan.md): POST `/v1/loans/{loanId}`. Optional Fields: approvedLoanAmount and expectedDisbursementDate. - [Modify a loan application](https://developer.lokta.ai/api/loan-accounts/update-loan-application.md): PUT `/v1/loans/{loanId}`. Loan application can only be modified when in 'Submitted and pending approval' state. Once the application is approved, the details cannot be changed using this method. - [Delete a Loan Application](https://developer.lokta.ai/api/loan-accounts/delete-loan-application.md): DELETE `/v1/loans/{loanId}`. Note: Only loans in "Submitted and awaiting approval" status can be deleted. - [Retrieve Loan Approval Template](https://developer.lokta.ai/api/loan-accounts/retrieve-approval-template.md): GET `/v1/loans/{loanId}/template`. ### Loan Transactions Money movements on a loan: repayments, adjustments, waivers, write-offs and their undo commands. - [Loan Transactions: all 8 endpoints](https://developer.lokta.ai/api/loan-transactions.md): the section index, one line per endpoint. - [Retrieve Transactions](https://developer.lokta.ai/api/loan-transactions/retrieve-all-loan-transactions.md): GET `/v1/loans/{loanId}/transactions`. - [Significant Loan Transactions](https://developer.lokta.ai/api/loan-transactions/handle-commands-loan-transaction.md): POST `/v1/loans/{loanId}/transactions`. This API covers the major loan transaction functionality. - [Preview Re-Age Schedule](https://developer.lokta.ai/api/loan-transactions/preview-re-age-loan-schedule.md): GET `/v1/loans/{loanId}/transactions/reage-preview`. Generates a preview of the re-aged loan schedule based on the provided parameters without creating any transactions or modifying the loan. - [Preview Re-Amortized Schedule](https://developer.lokta.ai/api/loan-transactions/preview-re-amortize-loan-schedule.md): GET `/v1/loans/{loanId}/transactions/reamortization-preview`. Generates a preview of the re-amortized loan schedule based on the provided parameters without creating any transactions or modifying the loan. - [Retrieve Loan Transaction Template](https://developer.lokta.ai/api/loan-transactions/retrieve-template-loan-transaction.md): GET `/v1/loans/{loanId}/transactions/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Transaction Details](https://developer.lokta.ai/api/loan-transactions/retrieve-one-loan-transaction.md): GET `/v1/loans/{loanId}/transactions/{transactionId}`. - [Adjust a Transaction](https://developer.lokta.ai/api/loan-transactions/adjust-loan-transaction.md): POST `/v1/loans/{loanId}/transactions/{transactionId}`. Note: there is no need to specify command={transactionType} parameter. - [Undo a Waive Charge Transaction](https://developer.lokta.ai/api/loan-transactions/undo-waive-charge-loan-transaction.md): PUT `/v1/loans/{loanId}/transactions/{transactionId}`. ### Loan Products The lending catalogue: product definitions, terms, charges and accounting mappings. - [Loan Products: all 13 endpoints](https://developer.lokta.ai/api/loan-products.md): the section index, one line per endpoint. - [List Loan Products](https://developer.lokta.ai/api/loan-products/retrieve-all-loan-products.md): GET `/v1/loanproducts`. - [Create a Loan Product](https://developer.lokta.ai/api/loan-products/create-loan-product.md): POST `/v1/loanproducts`. Depending of the Accounting Rule (accountingRule) selected, additional fields with details of the appropriate Ledger Account identifiers would need to be passed in. - [List Loan Products with basic details](https://developer.lokta.ai/api/loan-products/retrieve-all-loan-products-details.md): GET `/v1/loanproducts/basic-details`. Lists Loan Products with basic details to be listed. - [Retrieve Loan Product Details Template](https://developer.lokta.ai/api/loan-products/retrieve-template-loan-product.md): GET `/v1/loanproducts/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Loan Product](https://developer.lokta.ai/api/loan-products/retrieve-one-loan-product.md): GET `/v1/loanproducts/{productId}`. - [Update a Loan Product](https://developer.lokta.ai/api/loan-products/update-loan-product.md): PUT `/v1/loanproducts/{productId}`. - [List Loan Products (V2)](https://developer.lokta.ai/api/loan-products/retrieve-all-loan-products-v2.md): GET `/v2/loanproducts`. - [Create a Loan Product (V2)](https://developer.lokta.ai/api/loan-products/create-loan-product-v2.md): POST `/v2/loanproducts`. Creates a Loan Product through the V2 contract. - [List draft Loan Products (V2)](https://developer.lokta.ai/api/loan-products/retrieve-all-draft-loan-products-v2.md): GET `/v2/loanproducts/drafts`. Lists Loan Products still in DRAFT — exactly those the standard listing excludes. - [Retrieve Loan Product Details Template (V2)](https://developer.lokta.ai/api/loan-products/retrieve-template-loan-product-v2.md): GET `/v2/loanproducts/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Loan Product (V2)](https://developer.lokta.ai/api/loan-products/retrieve-one-loan-product-v2.md): GET `/v2/loanproducts/{productId}`. - [Update a Loan Product (V2)](https://developer.lokta.ai/api/loan-products/update-loan-product-v2.md): PUT `/v2/loanproducts/{productId}`. Updates a Loan Product through the V2 contract. Preserves V1 partial-update semantics: omitted fields (including loanScheduleType) leave the existing configuration unchanged. - [Activate a Loan Product (V2)](https://developer.lokta.ai/api/loan-products/activate-loan-product-v2.md): POST `/v2/loanproducts/{productId}/activate`. A product created through the V2 contract starts as DRAFT: it cannot originate loans whatever its start and close dates say, and it appears in no product selection list. Activating it releases it, after which start_date and close_date govern origination in the usual way. ### Charges Fee and penalty definitions that products and accounts draw from. - [Charges: all 6 endpoints](https://developer.lokta.ai/api/charges.md): the section index, one line per endpoint. - [Retrieve Charges](https://developer.lokta.ai/api/charges/retrieve-all-charges.md): GET `/v1/charges`. - [Create/Define a Charge](https://developer.lokta.ai/api/charges/create-charge.md): POST `/v1/charges`. Define a new charge that can later be associated with loans and savings through their respective product definitions or directly on each account instance. - [Retrieve Charge Template](https://developer.lokta.ai/api/charges/retrieve-template-charge.md): GET `/v1/charges/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Charge](https://developer.lokta.ai/api/charges/retrieve-one-charge.md): GET `/v1/charges/{chargeId}`. Returns the details of a defined Charge. - [Update a Charge](https://developer.lokta.ai/api/charges/update-charge.md): PUT `/v1/charges/{chargeId}`. - [Delete a Charge](https://developer.lokta.ai/api/charges/delete-charge.md): DELETE `/v1/charges/{chargeId}`. ### Tax on Charges Tax components and tax groups applied through charges. - [Tax on Charges: all 10 endpoints](https://developer.lokta.ai/api/tax-on-charges.md): the section index, one line per endpoint. - [List Tax Components](https://developer.lokta.ai/api/tax-on-charges/retrieve-all-tax-components.md): GET `/v1/taxes/component`. - [Create a new Tax Component](https://developer.lokta.ai/api/tax-on-charges/create-tax-component.md): POST `/v1/taxes/component`. Optional Fields: debitAccountType, debitAccountId, creditAccountType, creditAccountId, startDate. - [Retrieve Tax Component Template](https://developer.lokta.ai/api/tax-on-charges/retrieve-template-tax-component.md): GET `/v1/taxes/component/template`. - [Retrieve Tax Component](https://developer.lokta.ai/api/tax-on-charges/retrieve-one-tax-component.md): GET `/v1/taxes/component/{taxComponentId}`. - [Update Tax Component](https://developer.lokta.ai/api/tax-on-charges/update-tax-component.md): PUT `/v1/taxes/component/{taxComponentId}`. Updates Tax component. Debit and credit account details cannot be modified. All the future tax components would be replaced with the new percentage. - [List Tax Group](https://developer.lokta.ai/api/tax-on-charges/retrieve-all-tax-groups.md): GET `/v1/taxes/group`. - [Create a new Tax Group](https://developer.lokta.ai/api/tax-on-charges/create-tax-group.md): POST `/v1/taxes/group`. Mandatory Fields: name and taxComponents. - [Retrieve Tax Group Template](https://developer.lokta.ai/api/tax-on-charges/retrieve-template-tax-group.md): GET `/v1/taxes/group/template`. - [Retrieve Tax Group](https://developer.lokta.ai/api/tax-on-charges/retrieve-one-tax-group.md): GET `/v1/taxes/group/{taxGroupId}`. - [Update Tax Group](https://developer.lokta.ai/api/tax-on-charges/update-tax-group.md): PUT `/v1/taxes/group/{taxGroupId}`. Updates Tax Group. Only end date can be up-datable and can insert new tax components. ### Documents Files attached to platform entities: upload, list, download. - [Documents: all 5 endpoints](https://developer.lokta.ai/api/documents.md): the section index, one line per endpoint. - [List documents](https://developer.lokta.ai/api/documents/retrieve-all-documents.md): GET `/v1/{entityType}/{entityId}/documents`. - [Create a Document](https://developer.lokta.ai/api/documents/create-document.md): POST `/v1/{entityType}/{entityId}/documents`. Note: A document is created using a Multi-part form upload. - [Retrieve a Document](https://developer.lokta.ai/api/documents/get-document.md): GET `/v1/{entityType}/{entityId}/documents/{documentId}`. - [Update a Document](https://developer.lokta.ai/api/documents/update-document.md): PUT `/v1/{entityType}/{entityId}/documents/{documentId}`. Note: A document is updated using a Multi-part form upload. - [Remove a Document](https://developer.lokta.ai/api/documents/delete-document.md): DELETE `/v1/{entityType}/{entityId}/documents/{documentId}`. ### Payment Types The payment instrument catalogue: cash, transfer, cheque and friends. - [Payment Types: all 5 endpoints](https://developer.lokta.ai/api/payment-types.md): the section index, one line per endpoint. - [Retrieve all Payment Types](https://developer.lokta.ai/api/payment-types/get-all-payment-types.md): GET `/v1/paymenttypes`. - [Create a Payment Type](https://developer.lokta.ai/api/payment-types/create-payment-type.md): POST `/v1/paymenttypes`. - [Retrieve a Payment Type](https://developer.lokta.ai/api/payment-types/retrieve-one-payment-type.md): GET `/v1/paymenttypes/{paymentTypeId}`. - [Update a Payment Type](https://developer.lokta.ai/api/payment-types/update-payment-type.md): PUT `/v1/paymenttypes/{paymentTypeId}`. - [Delete a Payment Type](https://developer.lokta.ai/api/payment-types/delete-code-payment-type.md): DELETE `/v1/paymenttypes/{paymentTypeId}`. ### Reports The reporting engine: catalogue, parameters, and execution. - [Reports: all 7 endpoints](https://developer.lokta.ai/api/reports.md): the section index, one line per endpoint. - [List Reports](https://developer.lokta.ai/api/reports/retrieve-all-reports.md): GET `/v1/reports`. - [Create a Report](https://developer.lokta.ai/api/reports/create-report.md): POST `/v1/reports`. - [Retrieve Report Template](https://developer.lokta.ai/api/reports/retrieve-template-report.md): GET `/v1/reports/template`. This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of. - [Retrieve a Report](https://developer.lokta.ai/api/reports/retrieve-one-report.md): GET `/v1/reports/{id}`. - [Update a Report](https://developer.lokta.ai/api/reports/update-report.md): PUT `/v1/reports/{id}`. Only the useReport description can be updated for core reports. - [Delete a Report](https://developer.lokta.ai/api/reports/delete-report.md): DELETE `/v1/reports/{id}`. - [Run a predefined report](https://developer.lokta.ai/api/reports/run-report.md): GET `/v1/runreports/{reportName}`. This resource allows you to run and receive output from pre-defined Lokta reports. ## Optional - [Interactive explorer](https://developer.lokta.ai/reference.html): the whole reference on one page, with search. Rendered in the browser, so the Markdown twins above read better.