List open campaigns
curl --request GET \
--url https://workspace.passionfroot.me/api/creators/v1/discover/campaigns \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://workspace.passionfroot.me/api/creators/v1/discover/campaigns', 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/discover/campaigns"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "<string>",
"name": "<string>",
"brief": "<string>",
"briefLink": "<string>",
"minAudienceReach": 123,
"maxAudienceReach": 123,
"categories": [
"<string>"
],
"publishedAt": "2023-11-07T05:31:56Z",
"status": "open",
"partner": {
"id": "<string>",
"name": "<string>",
"websiteUrl": "<string>"
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<string>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "This API key is over its rate limit. Wait for Retry-After before sending more.",
"details": {
"limit": 2,
"windowSeconds": 1
}
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}Discover
List open campaigns
Returns the campaigns open to this creator in Discover, newest first. Each one matches the creator’s categories and audience reach, and the creator hasn’t applied to it yet. Discover is open to creators with payouts set up, and anyone else gets DISCOVER_UNAVAILABLE.
GET
/
discover
/
campaigns
List open campaigns
curl --request GET \
--url https://workspace.passionfroot.me/api/creators/v1/discover/campaigns \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://workspace.passionfroot.me/api/creators/v1/discover/campaigns', 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/discover/campaigns"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "<string>",
"name": "<string>",
"brief": "<string>",
"briefLink": "<string>",
"minAudienceReach": 123,
"maxAudienceReach": 123,
"categories": [
"<string>"
],
"publishedAt": "2023-11-07T05:31:56Z",
"status": "open",
"partner": {
"id": "<string>",
"name": "<string>",
"websiteUrl": "<string>"
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<string>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "This API key is over its rate limit. Wait for Retry-After before sending more.",
"details": {
"limit": 2,
"windowSeconds": 1
}
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "<string>",
"details": "<unknown>"
}
}Authorizations
Create an API key from Settings → AI agents & API in an approved Creator workspace.
Query Parameters
Include campaigns published on or after this date or timestamp.
Required range:
1 <= x <= 100Opaque cursor returned by the previous page.

