Skip to main content

Public and Internal Endpoints

This page helps integration teams separate supported public routes from internal automation routes.

Public routes (no member session required)

Health and branding

  • GET /api/v1/health
  • GET /api/v1/public/workspaces/:workspaceId/logo
  • GET /api/v1/public/brand/email-icon.png
  • POST /api/v1/public/marketing/chat

Invite token validation/acceptance

  • GET /api/v1/invites/:token
  • GET /api/v1/email-invites/:token
  • POST /api/v1/invites/:token/accept
  • POST /api/v1/email-invites/:token/accept

Proposal portal (tokenized)

  • GET /api/v1/public/proposals/:token
  • POST /api/v1/public/proposals/:token/view
  • POST /api/v1/public/proposals/:token/accept
  • POST /api/v1/public/proposals/:token/decline
  • POST /api/v1/public/proposals/:token/request-changes
  • GET /api/v1/public/proposals/:token/messages
  • POST /api/v1/public/proposals/:token/messages

Occupant portal (tokenized)

  • GET /api/v1/occupant/:token/meta
  • POST /api/v1/occupant/:token/submit
  • POST /api/v1/occupant/:token/issues/:issueId/reference-photos/presign
  • POST /api/v1/occupant/:token/issues/:issueId/reference-photos/complete

Internal automation routes (not customer integration APIs)

These are intended for trusted infrastructure (scheduled jobs/ops) only:
  • GET /api/v1/internal/collab-metrics
  • POST /api/v1/internal/om-maintenance-reminders — daily PPM email + push digests (assignees + workspace managers; meter-threshold schedules labeled Meter/calendar). Authenticate with header x-plansync-cron-secret: INTERNAL_CRON_SECRET.
  • POST /api/v1/internal/om-inspection-reminders — daily inspection template digests (managers) for templates overdue or due within 7 days (UTC). Same cron secret header.
  • POST /api/v1/internal/om-work-order-aging-reminders — daily manager digests for open/in-progress work orders older than 7 and 30 days. Same cron secret header.
  • POST /api/v1/internal/proposal-reminders
Use secret-based protection and private network controls for these routes. Schedule the OM reminder jobs once per day in your deploy environment.

Stripe webhook route

  • POST /api/stripe/webhook
This route is for Stripe to call your backend, not for customer system integrations.

Security recommendations

  • Do not expose internal endpoints in public API clients
  • Rotate and revoke leaked tokens quickly
  • Keep audit and observability around all external callback and public-token traffic

Example: occupant submit