What VOMO is
VOMO is Virtuous’s volunteer engagement platform. Customers use it to:- Recruit and manage volunteer Users
- Plan and run Projects (specific volunteer opportunities)
- Organize Groups of volunteers around recurring activities or affinities
- Track Participations when volunteers show up to Project Dates
- Group Projects under longer-running Campaigns
- Manage Forms that volunteers complete (waivers, signups, profile data)
- Award Certificates for completed training or achievements
- Operate as part of an Organization family (parent-child organization hierarchies)
At a glance
How Volunteer differs from CRM+ and Raise
If you’ve worked with CRM+ or Raise, several Volunteer conventions will look different. Understanding the differences upfront prevents bugs.Naming conventions are snake_case
Volunteer usessnake_case everywhere — query parameters (name_like, created_before, updated_after) and response properties (first_name, last_name, created_at, user_status). This is consistent throughout the API but differs from CRM+ (PascalCase) and Raise (mixed PascalCase on /list, camelCase on /query).
For partners building integrations against multiple Virtuous APIs:
JavaScript
Pagination uses a different envelope
CRM+ and Raise use{ list, total } and { items, total } envelopes respectively. Volunteer uses a richer Laravel-style envelope with three top-level fields:
links field provides direct URLs for paging navigation — partners can follow links.next rather than constructing URLs manually. See Pagination for the full pattern.
No webhooks — polling is the only path
Unlike CRM+ and Raise (which both have webhook subscription APIs), Volunteer has no webhook surface at all. Partner integrations that need to react to changes in Volunteer data must poll — typically by querying with theupdated_after filter on resources that support it.
This shapes the integration architecture significantly. The “Webhooks and Events” group in the CRM+ and Raise docs is replaced by Polling and Sync in the Volunteer docs.
Mostly read, limited writes
The API is dominated byGET endpoints. The write endpoints that do exist:
Most notably, there’s no write endpoint for Participations. Partners can read participation records (returned nested on User and Project Date responses) but cannot create or modify them through the API. Partners who need to record participations programmatically must coordinate with VOMO’s admin team for an alternative path.
See Understand Write Limitations for the complete picture.
URL-versioned
Volunteer’s path includes a/v1/ segment: https://api.vomo.org/v1/users. This is different from Raise (which is unversioned) and CRM+ (which uses unversioned /api/ paths). The presence of /v1/ suggests a future /v2/ may exist someday and existing integrations would have a migration path.
For now, all integrations use /v1/. See Versioning and Backward Compatibility.
The resource model
The eight resource families and how they relate: The central relationships:
See The Volunteer Data Model for the full reference.
What partner integrations build against the Volunteer API
Common partner integration patterns:
Most of these are read-heavy. Volunteer’s API surface is well-suited to feeding data outward into other systems.
What the API is not typically used for:
- Recording new participations — no write endpoint exists
- Managing volunteer scheduling — Project Dates are read-only; scheduling happens in the VOMO admin UI
- Volunteer self-service — the API isn’t designed for direct exposure to volunteers; build a partner-controlled portal layer instead
- Webhook-driven real-time sync — no webhooks exist
Conventions across the three Virtuous APIs
A quick reference for partners building against multiple APIs:
The three APIs were built by different teams at different times (some pre-acquisition by Virtuous). The differences reflect those histories. The v2 platform overhaul is expected to reconcile many of these inconsistencies, but until then, integrations target each API on its own terms.
What’s documented here
The Volunteer documentation covers:
Notably absent (compared to CRM+ and Raise):
- No “Webhooks” group — replaced by Polling and Sync, since Volunteer has no webhook surface.
- Fewer recipes — the smaller API surface produces fewer distinct integration shapes.
What’s in the spec but flagged for review
The Volunteer OpenAPI spec has several gaps the documentation team is aware of and that partner integrations should know about:
These are documented inline on the relevant reference pages with
<Warning> callouts. Until the spec is updated, the patterns on this page describe what to expect from the live API.
Where to go next
Quickstart
A minimal end-to-end example — get a token, list users, parse the response.
Authentication
How to obtain a Bearer token and use it on every request.
The Volunteer Data Model
The full resource model with all eight families and their relationships.
Conventions across APIs
The cross-API reference for partners building against multiple Virtuous products.