curl --request POST \
--url https://api.investorlift.com/marketplace/v1/buy/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"deal_id": "<string>",
"offer_amount": 123,
"emd_amount": 123,
"preview_token": "<string>"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deal_id: '<string>',
offer_amount: 123,
emd_amount: 123,
preview_token: '<string>'
})
};
fetch('https://api.investorlift.com/marketplace/v1/buy/offers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/marketplace/v1/buy/offers"
payload = {
"deal_id": "<string>",
"offer_amount": 123,
"emd_amount": 123,
"preview_token": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "<string>",
"deal_id": "<string>",
"buyer_id": "<string>",
"status": "new",
"offer_amount": 123,
"emd_amount": 123,
"financing": "cash",
"submitted_by": "buyer",
"round": 0,
"parent_offer_id": "<string>",
"root_offer_id": "<string>",
"note": "<string>",
"decline_reason": "price_too_low",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"chain": [
{
"id": "<string>",
"deal_id": "<string>",
"buyer_id": "<string>",
"status": "new",
"offer_amount": 123,
"emd_amount": 123,
"financing": "cash",
"submitted_by": "buyer",
"round": 0,
"parent_offer_id": "<string>",
"root_offer_id": "<string>",
"note": "<string>",
"decline_reason": "price_too_low",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
},
"meta": {
"request_id": "<string>",
"api_version": "<string>"
}
}{
"data": {
"status": "held",
"kind": "offer",
"hold_id": "<string>",
"held_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"api_version": "<string>"
}
}{
"type": "https://developers.investorlift.com/marketplace/errors#invalid_body",
"title": "Body unusable",
"status": 400,
"code": "invalid_body",
"detail": "<string>",
"recovery": "Send a JSON body with the content type application/json.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#unauthorized",
"title": "Not authenticated",
"status": 401,
"code": "unauthorized",
"detail": "<string>",
"recovery": "Send a current access token for this API, and start a new authorization when the token is expired.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#api_offers_disabled",
"title": "Seller refuses API offers",
"status": 403,
"code": "api_offers_disabled",
"detail": "<string>",
"recovery": "Contact the seller outside the API, because this seller takes no offer through it.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "<string>",
"recovery": "Check the id, and check that the account you call with owns the resource.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "<string>",
"recovery": "Use one of the methods the documentation lists for this path.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#deal_changed",
"title": "Deal changed",
"status": 409,
"code": "deal_changed",
"detail": "<string>",
"recovery": "Read the current terms in the body, take a new preview, then submit again.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#below_floor",
"title": "Offer below the floor",
"status": 422,
"code": "below_floor",
"detail": "<string>",
"recovery": "Raise the offer amount, then submit a new preview and a new offer.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#cap_reached",
"title": "Cap reached",
"status": 429,
"code": "cap_reached",
"detail": "<string>",
"recovery": "Wait for the time in Retry-After, or raise your trust tier with the step in GET /me.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#origin_error",
"title": "Service unavailable",
"status": 503,
"code": "origin_error",
"detail": "<string>",
"recovery": "Repeat the call in a minute, and tell Investorlift support when the answer stays the same.",
"request_id": "<string>"
}Submit an offer on a deal
Creates the first round of a chain on one deal. Send the token of a preview of the same terms. The API repeats every check the preview ran and refuses a deal or a requirement that moved in between. The hold queue can take this write. The API then answers 202 with the status held, and the seller sees nothing until the release.
curl --request POST \
--url https://api.investorlift.com/marketplace/v1/buy/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"deal_id": "<string>",
"offer_amount": 123,
"emd_amount": 123,
"preview_token": "<string>"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
deal_id: '<string>',
offer_amount: 123,
emd_amount: 123,
preview_token: '<string>'
})
};
fetch('https://api.investorlift.com/marketplace/v1/buy/offers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/marketplace/v1/buy/offers"
payload = {
"deal_id": "<string>",
"offer_amount": 123,
"emd_amount": 123,
"preview_token": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "<string>",
"deal_id": "<string>",
"buyer_id": "<string>",
"status": "new",
"offer_amount": 123,
"emd_amount": 123,
"financing": "cash",
"submitted_by": "buyer",
"round": 0,
"parent_offer_id": "<string>",
"root_offer_id": "<string>",
"note": "<string>",
"decline_reason": "price_too_low",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"chain": [
{
"id": "<string>",
"deal_id": "<string>",
"buyer_id": "<string>",
"status": "new",
"offer_amount": 123,
"emd_amount": 123,
"financing": "cash",
"submitted_by": "buyer",
"round": 0,
"parent_offer_id": "<string>",
"root_offer_id": "<string>",
"note": "<string>",
"decline_reason": "price_too_low",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
},
"meta": {
"request_id": "<string>",
"api_version": "<string>"
}
}{
"data": {
"status": "held",
"kind": "offer",
"hold_id": "<string>",
"held_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"api_version": "<string>"
}
}{
"type": "https://developers.investorlift.com/marketplace/errors#invalid_body",
"title": "Body unusable",
"status": 400,
"code": "invalid_body",
"detail": "<string>",
"recovery": "Send a JSON body with the content type application/json.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#unauthorized",
"title": "Not authenticated",
"status": 401,
"code": "unauthorized",
"detail": "<string>",
"recovery": "Send a current access token for this API, and start a new authorization when the token is expired.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#api_offers_disabled",
"title": "Seller refuses API offers",
"status": 403,
"code": "api_offers_disabled",
"detail": "<string>",
"recovery": "Contact the seller outside the API, because this seller takes no offer through it.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "<string>",
"recovery": "Check the id, and check that the account you call with owns the resource.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "<string>",
"recovery": "Use one of the methods the documentation lists for this path.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#deal_changed",
"title": "Deal changed",
"status": 409,
"code": "deal_changed",
"detail": "<string>",
"recovery": "Read the current terms in the body, take a new preview, then submit again.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#below_floor",
"title": "Offer below the floor",
"status": 422,
"code": "below_floor",
"detail": "<string>",
"recovery": "Raise the offer amount, then submit a new preview and a new offer.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#cap_reached",
"title": "Cap reached",
"status": 429,
"code": "cap_reached",
"detail": "<string>",
"recovery": "Wait for the time in Retry-After, or raise your trust tier with the step in GET /me.",
"request_id": "<string>"
}{
"type": "https://developers.investorlift.com/marketplace/errors#origin_error",
"title": "Service unavailable",
"status": 503,
"code": "origin_error",
"detail": "<string>",
"recovery": "Repeat the call in a minute, and tell Investorlift support when the answer stays the same.",
"request_id": "<string>"
}Authorizations
Authorization code with PKCE. The person grants the scopes on the Investorlift consent page and accepts the Marketplace API Terms there.
Headers
A key of your own that names this attempt. The same key with the same body replays the stored answer.
1 - 255Body
The deal the offer is on, mdl_.
What the buyer offers. Whole dollars.
x <= 9007199254740991The earnest money deposit. Whole dollars.
x <= 9007199254740991cash, lender The token the preview of these terms returned.
A note to the seller, at most 500 characters.
500Was this page helpful?