API Reference
BidStacker's REST API for programmatic access to RFPs, proposals, templates, and AI features.
Authentication
Most endpoints require a Supabase session cookie. Authenticate by logging in through the web app. For server-to-server access, use the MCP integration (see MCP Docs).
Looking for AI agent integration?
The MCP server provides 29 tools for Claude Code, Claude Desktop, and other AI agents.
/api/rfpsSearch and filter RFPs
Auth: Cookie (Supabase session)
keywordstring— Full-text search across title, description, agencylimitnumber— Max results (default: 50)/api/rfpsTrigger an RFP sync from SAM.gov
Auth: Cookie (Supabase session)
keywordstring— Search keyword for SAM.govlimitnumber— Max results to fetch/api/saved-rfpsList bookmarked RFPs for the authenticated user
Auth: Cookie (Supabase session)
/api/saved-rfpsBookmark an RFP
Auth: Cookie (Supabase session)
rfpIdstring (UUID)— RFP to bookmark/api/saved-rfpsRemove an RFP bookmark
Auth: Cookie (Supabase session)
rfpIdstring (UUID)— RFP to unbookmark/api/notificationsList notifications for authenticated user
Auth: Cookie (Supabase session)
/api/notificationsMark notifications as read
Auth: Cookie (Supabase session)
idsstring[] (UUIDs)— Notification IDs to mark read/api/proposals/[id]/statusChange proposal status with transition validation
Auth: Cookie (Supabase session)
statusenum— draft | review | submitted | awarded | lost/api/proposals/generate-draftGenerate AI content for a proposal section
Auth: Cookie (Supabase session) + Rate limit (10/min)
rfpIdstring (UUID)— Target RFPsectionTitlestring— Section to generatetoneenum— formal | technical | persuasive/api/aiAI text processing (improve, shorten, expand, etc.)
Auth: Cookie (Supabase session) + Rate limit
actionenum— professional | shorten | expand | summarize | customcontentstring— Text to process/api/templatesList proposal templates (default + organization)
Auth: Cookie (Supabase session)
/api/templatesCreate a new proposal template
Auth: Cookie (Supabase session)
namestring— Template namesectionsarray— Section definitions [{title, body?}]/api/sync/statusGet recent sync run history
Auth: Cookie (Supabase session)
/api/sync/triggerManually trigger a data sync
Auth: Cookie (Supabase session) + Rate limit (3/min)
sourceenum— federal | statedaysBacknumber— Days to look back (1-7)/api/matching-framework/generateGenerate AI matching framework from org profile
Auth: Cookie (Supabase session)
/api/contactSubmit a contact form message
Auth: Public (rate limited by IP)
namestring— Sender nameemailstring— Sender emailsubjectstring— Message subjectmessagestring— Message body