Skip to main content
Evalezy charges in AI credits, at a fixed price that is known before grading starts. The price depends only on what you send, never on how long the AI spends on it, so you can quote your own customers in advance.

What a submission costs

More examples at the standard rate:
  • B.Com Semester III booklet, 32 pages: 32 credits
  • UPSC full-length test copy, 50 pages: 50 credits
  • UPSC daily answer-writing, 3 pages: 3 credits
Credits are bought by your institute in the Vacademy admin dashboard. For the price of credits in your currency, see evalezy.com/pricing or contact hello@evalezy.com.

What is free

  • Failed copies. A submission that ends with status: "failed" is not charged, whatever the reason: unreadable scan, unsupported language, timeout, engine error. See the submission error codes.
  • Cancelled copies. Cancelling a queued or running evaluation (POST /submissions/{id}/cancel) charges nothing.
  • Objective answers. In a typed submission, MCQ, true/false, numeric and one-word answers are scored against your answer key without the AI and cost nothing. Blank long answers are scored 0 and are not charged.
  • Reads. Fetching results, lists, the checked copy, quotes and your balance is free.

What is charged again

  • Re-evaluate. POST /submissions/{id}/re-evaluate grades the whole copy again and is charged again at the same price (every page, or every non-blank long answer). Re-running a copy that failed is effectively its first charge, because the failed run was free.

Edge cases

  • A handwritten copy of 41 to 80 pages is accepted and charged per page, and is flagged for human review (review_reasons: ["pages_beyond_vision_limit"]). Copies of more than 80 pages are refused with 422 too_many_pages before anything is charged.
  • A copy that finishes as partially_graded (the AI could not grade one or more questions) is charged its full quote. Mark those questions by hand with PATCH /submissions/{id}/questions/{question_id}; overrides are free.

How charging works

1

Accept: the quote is fixed and reserved

When you create a submission, the price is computed from the PDF’s page count (or the number of non-blank long answers) and returned in the response’s quote block. The amount is reserved against your balance and shows in committed until grading ends.
2

Graded: the quote is charged

When grading completes, exactly the quoted amount is charged. There is no overage. credits_charged on the submission shows the amount.
3

Failed or cancelled: nothing is charged

The reservation is released and credits_charged stays null.
The submission object reports the charge:

Check your balance: GET /credits

Returns your balance, what is already reserved, what you can still spend, your institute’s API rate card and the last 30 days of API spend. Requires the evaluation:read scope.
Response
number
Your institute’s current AI credit balance.
number
Credit line agreed with Evalezy, if any. Lets accepted work continue when the balance is low. 0 when you have none.
number
Credits reserved by your submissions that are queued or being graded right now.
number
What new submissions can use: balance + credit_limit - committed. A submission is refused with 402 when its quote exceeds this.
object
Your institute’s API prices.
object
Graded API copies in the last 30 days: copies, pages and credits.

Quote a job: POST /credits/quote

Prices a job before you submit it and tells you whether your available credits cover it. Send exactly one of pages, upload_ids or typed_answers. Requires evaluation:read. A quote reserves nothing and charges nothing.
integer
Total pages you expect to submit, from 1 to 10,000,000. Use this to estimate a whole exam, for example 300 copies of about 12 pages each = 3600.
string[]
1 to 100 upload ids from POST /uploads. Each file must already be uploaded; the quote uses the exact page count of every PDF.
integer
Number of non-blank long answers you expect to submit, from 1 to 10,000,000.
Response
number
Credits the job would cost at your rate.
boolean
true when available covers total right now. Other submissions accepted in the meantime can change this.
string
standard or contract.
Quote errors

Quotes in other responses

You do not have to call the quote endpoint for every job. Prices also come back where you need them:
Creating an exam returns a quote block with the price of the exam’s unit:
For a typed exam: {"unit": "answer", "credits_per_answer": 1, "rate_source": "standard"}. The block is best effort: if prices cannot be fetched within a couple of seconds it is left out, and the exam is still created.
Every accepted submission returns its fixed price:
For typed answers: {"unit": "answer", "answers": 4, "credits": 4, "rate_source": "standard"}. A typed submission with nothing for the AI returns {"unit": "answer", "answers": 0, "credits": 0, "rate_source": null}.

Not enough credits (402)

A submission or re-evaluate whose quote is more than your available credits is refused before anything is created or charged:
Top up credits in the Vacademy dashboard, then send the same request again. A 402 is never stored for idempotent replay, so a retry with the same Idempotency-Key runs again.
Credits are checked again when a copy reaches the front of the queue. If your balance dropped in the meantime (for example through other spending in the dashboard), the copy fails with error.code: "insufficient_credits" and is not charged. Top up and call POST /submissions/{id}/re-evaluate.

Contract prices

Institutes with volume commitments can agree their own price with Evalezy. Once it is set, it applies automatically to every quote and every submission, and rate_source reads contract instead of standard. Nothing changes in your integration. To discuss a contract price, write to hello@evalezy.com.
Read GET /credits once a day and alert your operations team when available falls below a few days of typical usage. A failed 402 during result day is the most common avoidable incident.