Skip to main content

Lifecycle

  1. POST /v1/quotes creates a quote with status requested, together with the documents you attach.
  2. Our team reviews and prices it. The quote becomes awaiting_payment and a quote.ready webhook fires — the quote now carries priced line items and a total.
  3. POST /v1/quotes/{id}/approve approves it. The quote becomes approved, an order is created (webhooks quote.approved and order.created), and the order is billed to your account’s open invoice.
  4. The order progresses through in_progressready_for_reviewcompleted, each firing a webhook. Completed deliverables are available via GET /v1/documents/{id}/download.

Creating quotes

The main request fields (see the API reference for the full schema):
  • quote_typeacademic_evaluation, expert_opinion_letter, or translation, plus its type-specific fields (evaluation_type, expert_letter_type, source_language).
  • Documentsdocument_ids (files staged via the files API), and/or document_urls (public URLs we download server-side). Up to 50 combined.
  • candidate — the person the evaluation concerns.
  • turnaround, reference, notes, cc_emails, team.

Approving quotes

Approval requires net-terms invoicing on your account: the order is added to your open Fortis invoice, which is closed and sent on your billing cadence. No card payment happens in the API. Contact support to enable invoicing. A quote can only be approved while it is awaiting_payment. Failures return 422 with an error_code: Approval is race-safe: concurrent approve calls result in exactly one order — subsequent calls return quote_not_awaiting_payment.

Custom metadata

PUT /v1/orders/{id} lets you attach your own identifiers to an order: custom_reference (a string shown alongside the order) and custom_metadata (up to 64 key-value pairs, merged per key; set a key to null to remove it).