Skip to content

Community Submissions

Submit an Opportunity

POST /api/v1/submit

No authentication required. Rate-limited to 10 requests/minute per IP.

Submissions are queued for admin review. Approved submissions are converted into full FundingOpportunity records.

Request Body

FieldTypeRequiredDescription
titlestringYesOpportunity title (max 500 chars)
descriptionstringYesFull description (Markdown)
summarystringYesPlain text summary (max 280 chars)
rfpTypeenumYesrfp, grant, bounty, fellowship, or hackathon
applicationUrlURLYesLink to apply
sourceUrlURLYesWhere the opportunity was found
budgetMinnumberNoMinimum budget
budgetMaxnumberNoMaximum budget
currencystringNoISO 4217 currency code (default: USD)
opensAtISO datetimeNoWhen applications open
closesAtISO datetimeNoApplication deadline
categoriesstring[]YesTopic categories
ecosystemsstring[]YesEcosystem tags
tagsstring[]YesFree-form tags
submitterEmailemailNoYour email (for follow-up)
submitterNamestringNoYour name

Example

curl -X POST 'http://localhost:3000/api/v1/submit' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "DeFi Security Bounty Program",
    "description": "Bug bounty program for DeFi protocol auditing...",
    "summary": "Bug bounty for DeFi security",
    "rfpType": "bounty",
    "applicationUrl": "https://example.com/bounty",
    "sourceUrl": "https://example.com/programs",
    "budgetMin": 500,
    "budgetMax": 50000,
    "ecosystems": ["ethereum", "arbitrum"],
    "categories": ["security", "defi"],
    "tags": ["audit", "bug-bounty"],
    "submitterName": "Alice",
    "submitterEmail": "alice@example.com"
  }'

Response

{
  "message": "Submission received and queued for review.",
  "submissionId": "018e1234-5678-7890-abcd-ef1234567890"
}

Moderation Flow

  1. User submits via POST /api/v1/submit
  2. Submission enters pending status
  3. Admin reviews at GET /api/v1/admin/submissions
  4. Admin approves or rejects via POST /api/v1/admin/submissions/:id/review
  5. Approved submissions create a new FundingOpportunity record
  6. All actions are logged to the audit trail