Skip to main content

API Reference

The Tap backend exposes a REST API running on Express (port 3001). Endpoints are organized into four groups: campaigns, conversations, mission wizard, and analysis.

Authentication: Endpoints marked "Required" expect a Supabase JWT in the Authorization: Bearer <token> header. Token-based endpoints use a unique participant token instead.

Campaign Management

MethodEndpointAuthDescription
GET/api/campaignsRequiredList all campaigns for the authenticated user
GET/api/campaigns?archived=trueRequiredList archived campaigns
GET/api/campaigns/:idRequiredGet a single campaign by ID
POST/api/campaignsRequiredCreate a new campaign
PUT/api/campaigns/:idRequiredUpdate campaign details
DELETE/api/campaigns/:idRequiredDelete a campaign
POST/api/campaigns/:id/launchRequiredLaunch campaign (sends invitations)
PATCH/api/campaigns/:id/statusRequiredChange campaign status
POST/api/campaigns/:id/cloneRequiredClone a campaign's settings
POST/api/campaigns/:id/pauseRequiredPause an active campaign
POST/api/campaigns/:id/resumeRequiredResume a paused campaign
POST/api/campaigns/:id/archiveRequiredArchive a completed campaign
POST/api/campaigns/:id/unarchiveRequiredUnarchive a campaign

Participants

MethodEndpointAuthDescription
POST/api/campaigns/:id/participantsRequiredUpload participants via CSV file
GET/api/campaigns/:id/participantsRequiredList all participants for a campaign
POST/api/campaigns/:id/send-invitationsRequiredSend invitation emails to all participants

Conversations (Authenticated)

For campaign creators viewing conversation data.

MethodEndpointAuthDescription
GET/api/conversations/campaign/:campaignIdRequiredList all conversations for a campaign
GET/api/conversations/:idRequiredGet a single conversation with messages
POST/api/conversations/startRequiredStart a new conversation

Conversations (Public / Token-Based)

For participants responding to campaigns. No login required.

MethodEndpointAuthDescription
GET/api/conversations/token/:tokenNoneGet conversation by participant token
POST/api/conversations/:id/messagesNoneAdd a message to a conversation
POST/api/conversations/:id/respondNoneSubmit a final response

Mission Wizard

AI-powered endpoints for crafting campaign questions. These are used during campaign creation.

MethodEndpointAuthDescription
POST/api/mission/clarifyNoneAnalyze initial input, extract topic/audience/criteria
POST/api/mission/refineNoneGenerate unbiased question options
POST/api/mission/generate-summaryNoneGenerate engaging email summary for invitations

Analysis

MethodEndpointAuthDescription
GET/api/campaigns/:id/analysisRequiredGet full AI analysis (sentiment, themes, summary, groups)
POST/api/campaigns/:id/queryRequiredAsk a natural language question about campaign responses

Health Check

MethodEndpointAuthDescription
GET/healthNoneReturns backend status

Route Files

The API is organized into four route files, each with a corresponding controller:

Route FileControllerHandles
routes/campaigns.jscampaignController.jsCampaign CRUD, lifecycle, participants
routes/conversations.jsconversationController.jsConversation management, messages
routes/mission.jsmissionController.jsMission wizard AI endpoints
routes/analysis.jsanalysisController.jsAnalysis generation and Q&A