API Documentation
REST API reference for building integrations with CrewRivet.
https://app.crewrivet.com/apiAuth: Bearer token via
Authorization: Bearer <token> header
Authentication
/api/auth/login Authenticate and receive JWT token
{ email, password } { token, user } /api/auth/register Create a new tenant account
{ email, password, name, trade } { token, user } Contacts
/api/contacts List contacts with search and pagination
{ contacts[], total } /api/contacts Create a new contact
{ name, phone, email?, address? } { contact } /api/contacts/:id Get contact details with history
{ contact, jobs, invoices, messages } /api/contacts/:id Update contact fields
{ name?, phone?, email?, address? } { contact } Invoices
/api/invoices List invoices with status filter
{ invoices[], total, stats } /api/invoices Create a new invoice
{ contactId, lineItems[], description, dueDate } { invoice } /api/invoices/:id Get invoice details
{ invoice } /api/invoices/:id/pdf Download invoice PDF
application/pdf /api/invoices/:id/send Send invoice via SMS
{ success } Quotes
/api/quotes List quotes
{ quotes[], total, stats } /api/quotes Create a quote (flat or tiered)
{ contactId, scopeOfWork, lineItems[], tiers? } { quote } /api/quotes/:id/pdf Download quote PDF
application/pdf /api/quotes/:id/proposal Download branded proposal PDF
application/pdf Jobs
/api/jobs List jobs with status filter
{ jobs[], total, stats } /api/jobs Create a new job
{ contactId, title, scheduledDate, scheduledTime?, address? } { job } /api/jobs/:id/complete Mark job as completed
{ notes? } { job } Expenses
/api/expenses List expenses with filters
{ expenses[], total, stats } /api/expenses Create an expense
{ description, amountCents, category, jobId?, vendor?, expenseDate? } { expense } /api/expenses/receipt OCR scan a receipt photo
multipart/form-data (photo) { expense (auto-filled) } Reports
/api/reports/revenue Revenue by period with trend data
{ revenue[], total, trend } /api/reports/profit-loss Profit & loss statement
{ income, expenses, netProfit, monthly[] } /api/reports/cash-flow Cash flow analysis
{ cashIn, cashOut, net, monthly[] } /api/reports/ar-aging Accounts receivable aging
{ current, days30, days60, days90, totalOutstanding } Email Templates
/api/email-templates List email templates
{ templates[] } /api/email-templates/gallery/install Install a gallery template
{ galleryId } { template } /api/email-templates/:id/send Send email using template
{ to, variables? } { success } Dispatch
/api/dispatch Get dispatch board (team schedules)
{ team[], unassigned[] } /api/jobs/:id/assign Assign job to team member
{ assignedTo } { job } /api/dispatch/suggest/:jobId AI-powered crew suggestion
{ suggestions[] } /api/dispatch/optimize/:memberId Optimize route for a team member
{ route[], distanceSaved } Tax Reports
/api/reports/tax Schedule C tax data for a given year
{ income, expenses, categories[], netProfit } /api/reports/tax/quarterly Quarterly estimated tax obligations
{ quarters[], totalOwed } Payment Plans
/api/payment-plans Create a payment plan on an invoice
{ invoiceId, installments (2-12) } { plan, installments[] } /api/payment-plans/:id Get payment plan details
{ plan, installments[], payments[] } Receptionist
/api/receptionist/settings Get AI receptionist settings
{ settings } /api/receptionist/settings Update receptionist mode, greeting, language
{ enabled?, mode?, greeting?, language? } { settings } /api/receptionist/calls List AI receptionist call log
{ calls[], total } /api/receptionist/dashboard Receptionist metrics and recent calls
{ metrics, recentCalls[] } Referral Network
/api/referral-network List the jobs you referred (sent, with the matched business’s public name, booking link and phone) and the jobs referred to you (received: the referring business’s name and the trade, never the customer’s details). Paginated with limit and offset. Not available to demo accounts or to new trials that haven’t verified their email (403).
{ sent[], received[], stats: { sent_count, received_count, converted_count } } /api/referral-network Refer a job to another trade. We match a CrewRivet business in that trade when one is available; the customer’s optional details stay with you. Not available to demo accounts or to new trials that haven’t verified their email (403). Limited to 30 an hour per account.
{ referredTrade, contactName?, contactPhone?, contactEmail?, notes? } { referral, matched: { name, trade, booking_url, phone } | null } /api/referral-network/:id Update the status of a referral you sent or received
{ status } { referral } Feedback
/api/ai-help/feedback Submit product feedback (feature request, bug, general)
{ type, message, page? } { success } /api/ai-help/escalate Escalate to support team
{ subject?, message?, email? } { success } AI
/api/ai-help Ask AI about your business data
{ message } { reply, suggestions[] } /api/insights Get proactive dashboard insights
{ insights[] } /api/forecast/ai-projections AI revenue forecasting
{ projections[], summary } Webhooks (Outbound)
/api/webhooks List configured webhook endpoints
{ webhooks[] } /api/webhooks Register a webhook endpoint
{ url, events[], secret? } { webhook } /api/webhooks/:id/test Send a test event to the webhook
{ success, statusCode } Webhook Events
invoice.paid Fired when a customer pays an invoice
{ invoiceId, contactId, amountCents, paidAt } invoice.sent Fired when an invoice is sent to customer
{ invoiceId, contactId } job.completed Fired when a job is marked complete
{ jobId, contactId, title } quote.accepted Fired when a customer accepts a quote
{ quoteId, contactId, signerName } review.submitted Fired when a customer submits a review
{ reviewId, contactId, rating, feedback } lead.created Fired when a new lead is captured
{ contactId, name, phone, source } message.received Fired when an inbound SMS is received
{ messageId, contactId, body } booking.created Fired when a customer books online
{ jobId, contactId, date, time, service }