curl --request PUT \
--url https://api.nextlevelmca.com/v1/lenders/{id}/api-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"funder_api_spec_id": "<string>",
"api_environment": "development",
"api_credentials": "<string>"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
funder_api_spec_id: '<string>',
api_environment: 'development',
api_credentials: '<string>'
})
};
fetch('https://api.nextlevelmca.com/v1/lenders/{id}/api-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.nextlevelmca.com/v1/lenders/{id}/api-config"
payload = {
"funder_api_spec_id": "<string>",
"api_environment": "development",
"api_credentials": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"data": {
"lender_id": "<string>",
"submission_method": "email",
"funder_api_spec_id": "<string>",
"spec_display_name": "<string>",
"api_environment": "development",
"credentials_masked": "<string>",
"credential_fields": [
{
"key": "<string>",
"label": "<string>",
"secret": true,
"hint": "<string>"
}
],
"api_last_verified_at": "<string>",
"api_last_error": "<string>",
"capabilities": {
"polls": true,
"returns_offers": true,
"uploads_docs": true,
"sandbox": true,
"max_owners": 123
},
"tier": "A"
},
"meta": {}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}Set lender API configuration
Switch the lender to a funder integration (submission_method: "api" + funder_api_spec_id + api_credentials) or back to email. Credentials are one comma-separated string in the order of the integration’s credential_spec, stored encrypted and returned masked; omit them to keep the stored ones. Switching environment with new credentials replaces them. Once on api, POST /deals/{dealId}/submissions sends to this lender through the integration and use_api is true. 400 invalid_api_config when the integration is unknown or switched off, the credential count is wrong, or credentials are missing.
curl --request PUT \
--url https://api.nextlevelmca.com/v1/lenders/{id}/api-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"funder_api_spec_id": "<string>",
"api_environment": "development",
"api_credentials": "<string>"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
funder_api_spec_id: '<string>',
api_environment: 'development',
api_credentials: '<string>'
})
};
fetch('https://api.nextlevelmca.com/v1/lenders/{id}/api-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.nextlevelmca.com/v1/lenders/{id}/api-config"
payload = {
"funder_api_spec_id": "<string>",
"api_environment": "development",
"api_credentials": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"data": {
"lender_id": "<string>",
"submission_method": "email",
"funder_api_spec_id": "<string>",
"spec_display_name": "<string>",
"api_environment": "development",
"credentials_masked": "<string>",
"credential_fields": [
{
"key": "<string>",
"label": "<string>",
"secret": true,
"hint": "<string>"
}
],
"api_last_verified_at": "<string>",
"api_last_error": "<string>",
"capabilities": {
"polls": true,
"returns_offers": true,
"uploads_docs": true,
"sandbox": true,
"max_owners": 123
},
"tier": "A"
},
"meta": {}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}Authorizations
API key (nlmca_live_…) or OAuth access token
Path Parameters
Lender id
Body
api routes submissions through the funder integration; email switches back (the stored credentials are kept).
email, api Funder integration id from GET /lenders/api-specs. Required the first time submission_method is set to api.
50Environment the credentials belong to. Switching to production with new credentials replaces the development string.
development, production Credentials as one comma-separated string in the order of the integration’s credential_spec. Write-only: stored encrypted, returned masked. Omit to keep the stored credentials; required when the integration changes.
4000Was this page helpful?