JATS Verify API v1
From payment to your first request.
The Release Pack includes a server-to-server API key for 14 days and up to 10 unique JATS packages. This guide covers the complete path, including key recovery and usage checks.
01 / GET A KEY
How API access is issued.
- Buy the $99 Release Pack.Stripe collects the checkout email and confirms the one-time payment.
- Open the automatic JATS Verify email.It contains a secure Access Center link and your
jv_live_…API key. - Recover it whenever needed.Use the Access Center with the same checkout email. No password is required.
Access is automatic. There is no application, approval step, or separate developer account.
02 / AUTHENTICATE
Send the key in a request header.
Use either X-API-Key or a Bearer token. Do not put the key in a URL, browser storage, repository, log, or client-side application.
Base URL: https://jatsverify.com/api/v1
X-API-Key: jv_live_your_key_here
This API is intended for your server, CI job, or private command line. Cross-origin browser access is not enabled.
03 / CHECK USAGE
Confirm the key before uploading.
curl --fail-with-body \
https://jatsverify.com/api/v1/access/me \
-H "X-API-Key: $JATS_VERIFY_API_KEY"
The JSON response includes expires_at, seconds_remaining, package_limit, packages_used, and packages_remaining. Times are Unix seconds in UTC.
{
"status": "active",
"expires_at": 1788048000,
"seconds_remaining": 863400,
"package_limit": 10,
"packages_used": 2,
"packages_remaining": 8
}
04 / INSPECT XML
Return a JSON evidence report.
curl --fail-with-body \
https://jatsverify.com/api/v1/inspect \
-H "X-API-Key: $JATS_VERIFY_API_KEY" \
-H "Accept: application/json" \
-F "[email protected];type=application/xml" \
-F "[email protected];type=application/zip" \
-F "fail_on=error" \
-o evidence.json
Only xml is required. The response contains the pass or fail decision, finding counts, ordered findings, article summary, asset evidence, canonical SHA-256, and registry-check status.
05 / BUILD BUNDLE
Return a reproducible release ZIP.
curl --fail-with-body \
https://jatsverify.com/api/v1/bundle \
-H "X-API-Key: $JATS_VERIFY_API_KEY" \
-H "Accept: application/zip" \
-F "[email protected];type=application/xml" \
-F "[email protected];type=application/xml" \
-F "[email protected];type=application/json" \
-o jats-release.zip
The ZIP contains the submitted XML, included assets, evidence.json, and manifest-sha256.txt. Download results in the same request because JATS Verify does not keep customer package copies for later retrieval.
REQUEST FIELDS
Multipart form fields.
| Field | Required | Limit | Purpose |
|---|---|---|---|
xml | Yes | 10 MiB | Current JATS XML document. |
assets_zip | No | 25 MiB compressed | Figures and other locally referenced files. |
baseline | No | 10 MiB | Previous XML version for semantic comparison. Paid only. |
profile | No | 256 KiB | Journal-specific JSON rules. Paid only. Download a sample. |
fail_on | No | One value | error, warning, or info. Default: error. |
06 / LIMITS
Bounded, predictable processing.
- A Release Pack accepts up to 10 unique canonical packages during its 14-day validity.
- Rechecking the same canonical XML does not use another package slot.
- An assets ZIP may contain up to 100 files and 100 MiB uncompressed. Unsafe paths, links, encrypted entries, duplicates, and extreme compression ratios are rejected.
- Requests are synchronous. Keep the connection open until the report or ZIP is returned.
- The service makes no external DOI, PMID, ORCID, or other registry calls.
07 / ERRORS
Actionable HTTP responses.
| Status | Meaning | Next action |
|---|---|---|
| 400 | Malformed XML, ZIP, profile, or request. | Read the JSON detail and correct the input. |
| 401 | API key is missing, invalid, or expired. | Recover the current key in the Access Center. |
| 413 | A request or file exceeds a documented limit. | Reduce or split the package. |
| 422 | A form value is invalid. | Check field names and fail_on. |
| 429 | All 10 unique package slots are used. | Contact JATS Verify for ongoing production access. |
| 503 | Access fulfillment or email is temporarily unavailable. | Retry later or email support. |
Every response includes an X-Request-ID. Include that value when contacting [email protected].