Create a proposal
curl --request POST \
--url https://workspace.passionfroot.me/api/creators/v1/proposals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"requestId": "req_abc",
"placements": [
{
"productId": "prod_abc",
"date": "2026-09-14"
},
{
"productId": "prod_abc",
"date": "2026-09-28"
}
],
"basePriceCents": 250000
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requestId: 'req_abc',
placements: [
{productId: 'prod_abc', date: '2026-09-14'},
{productId: 'prod_abc', date: '2026-09-28'}
],
basePriceCents: 250000
})
};
fetch('https://workspace.passionfroot.me/api/creators/v1/proposals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://workspace.passionfroot.me/api/creators/v1/proposals"
payload = {
"requestId": "req_abc",
"placements": [
{
"productId": "prod_abc",
"date": "2026-09-14"
},
{
"productId": "prod_abc",
"date": "2026-09-28"
}
],
"basePriceCents": 250000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"proposalId": "<string>",
"collaborationId": "<string>",
"requestId": "<string>",
"status": "offer_pending",
"createdBy": "creator",
"priceCents": 123,
"budgetCents": 123,
"currency": "<string>",
"packageName": "<string>",
"placements": [
{
"date": "<string>",
"postType": "<string>",
"platform": "<string>"
}
],
"comment": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Too many requests, please try again later."
}{
"error": "<string>"
}Proposals
Create a proposal
Replies to a brand request with the creator’s own products, dates, and list price. basePriceCents is denominated in the collaboration currency and is not the creator payout returned by read endpoints.
POST
/
proposals
Create a proposal
curl --request POST \
--url https://workspace.passionfroot.me/api/creators/v1/proposals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"requestId": "req_abc",
"placements": [
{
"productId": "prod_abc",
"date": "2026-09-14"
},
{
"productId": "prod_abc",
"date": "2026-09-28"
}
],
"basePriceCents": 250000
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requestId: 'req_abc',
placements: [
{productId: 'prod_abc', date: '2026-09-14'},
{productId: 'prod_abc', date: '2026-09-28'}
],
basePriceCents: 250000
})
};
fetch('https://workspace.passionfroot.me/api/creators/v1/proposals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://workspace.passionfroot.me/api/creators/v1/proposals"
payload = {
"requestId": "req_abc",
"placements": [
{
"productId": "prod_abc",
"date": "2026-09-14"
},
{
"productId": "prod_abc",
"date": "2026-09-28"
}
],
"basePriceCents": 250000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"proposalId": "<string>",
"collaborationId": "<string>",
"requestId": "<string>",
"status": "offer_pending",
"createdBy": "creator",
"priceCents": 123,
"budgetCents": 123,
"currency": "<string>",
"packageName": "<string>",
"placements": [
{
"date": "<string>",
"postType": "<string>",
"platform": "<string>"
}
],
"comment": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Too many requests, please try again later."
}{
"error": "<string>"
}Authorizations
Create an API key from Settings → API in an approved Creator workspace.
Headers
Unique key for one logical write. Reuse the key and identical body for retries.
Required string length:
1 - 255Body
application/json
Required array length:
1 - 100 elementsShow child attributes
Show child attributes
Creator list price for the entire proposal in the collaboration currency.
Required range:
1 <= x <= 2147483647Required range:
1 <= x <= 365Response
The proposal's current state.
Show child attributes
Show child attributes