How Versioning Works
When you generate or update criteria, Nova:- Stores the new version linked to your
jobId - Records a timestamp for when the version was created
- Links each score to the exact criteria version used
You don’t need to track criteria versions yourself. Each score knows which criteria version was used, and we maintain full audit trails internally.
What This Means for You
Existing Scores Are Preserved
When you update criteria:- Previous scores retain their original criteria version
- You can still see what criteria were used for any historical score
- New scores use the updated criteria
Re-scoring after criteria updates: To re-score existing candidates with new criteria, set
rescore: true in your scoring request. This counts as an additional application scored for billing purposes. See Idempotency for details.Simple API
You just work with “current criteria” via the CRUD endpoints:GET /v1/jobs/{jobId}/criteria- Get current criteriaPOST/PATCH /v1/jobs/{jobId}/criteria- Update criteriaPOST /v1/criteria/generate- Generate new criteria
Audit Compliance
For compliance and audit purposes:- Every score is traceable to its exact criteria version
- Criteria changes are timestamped
- Historical criteria are never deleted, only superseded
Common Questions
Can I score with a specific criteria version?
Can I score with a specific criteria version?
Not in v1 of the API. Scores always use the current active criteria for the job. If you need to re-score with older criteria, contact us to discuss your use case.
How do I see what criteria were used for a score?
How do I see what criteria were used for a score?
The assessment in each score result reflects the criteria that were active at scoring time. For detailed audit trails, contact us through the Embed Portal.
What happens if I update criteria mid-batch?
What happens if I update criteria mid-batch?
Any candidates already queued for scoring will use the criteria that were active when they were queued. New submissions will use the updated criteria.
Can I roll back to previous criteria?
Can I roll back to previous criteria?
Not directly. To restore previous criteria, you would need to add them back via
POST /v1/jobs/{jobId}/criteria. We recommend keeping a copy of criteria you may want to restore.Why Server-Side Versioning?
We chose to manage criteria versioning on our side for several reasons:| Benefit | Description |
|---|---|
| Simpler integration | You don’t need to store or track version IDs |
| Guaranteed traceability | Every score links to its criteria - no drift possible |
| Reduced errors | No risk of scoring with wrong or outdated criteria |
| Compliance ready | Full audit trails without any extra work |
Historical: Original RFC Discussion
Historical: Original RFC Discussion
During the API design phase, we considered two approaches for criteria versioning. This section preserves that discussion for reference.
Option A: Criteria Set Reference
In this approach, partners would pass acriteriaSetId to the scoring endpoint instead of the full criteria array. We would look up the criteria server-side.How It Would Work
Tradeoffs
| Advantages | Considerations |
|---|---|
| Full traceability from score to criteria | Requires API call whenever criteria change |
| Immutable criteria versions | You depend on our stored criteria |
| Cleaner API (no large criteria array in requests) | Must keep your system in sync with ours |
| We can show criteria details in Embed Portal |
Option B: Inline Criteria with Optional Tracking
In this approach, partners would always pass the full criteria array (the original behavior), with optionalcriteriaSetId for correlation.How It Would Work
Tradeoffs
| Advantages | Considerations |
|---|---|
| Full control over criteria | Larger request payloads |
| No sync required with Nova | You’re responsible for criteria versioning |
/v1/criteria/generate becomes optional | criteriaSetId can drift from actual criteria used |
| Flexible for custom criteria workflows | Less visibility for us to help debug |
Our Decision
We chose a hybrid approach that combines the best of both options:- Server-side storage (from Option A): Criteria are stored and versioned by Nova
- No criteriaSetId in API (simplified): Partners just reference jobs by
jobId - Internal versioning: We track versions for audit purposes, but don’t expose version IDs in v1