A report PDF of one of your orders
/api/vendor/v1/orders/{order_id}/files/{service}The MVR, PSP or CDLIS report as a PDF, once its service is
completed (its file_url). Only a file checked as a real PDF is
served: the MVR is the report Sentinel rendered (never the state's
own document), and the CDLIS report never shows the SSN. Anything
else, including a report that is not ready, held for review or
missing from storage, is 404. Each download is recorded.
Authorization
X-API-KeystringrequiredThe environment's prefix (
snt_test_on this server;GET /mereturns the environment), 8 characters,_, then the secret. Shown once, when the key is created in the Sentinel Developers portal. A key works only against the server that issued it.
Path parameters
order_idstring · uuidrequiredservicestringrequired
Responses
200application/pdfContent-Dispositionheader · stringattachment; filename="sentinel-<service>-<order_id>.pdf".Cache-Controlheader · stringno-store: order results are never cached.X-Content-Type-Optionsheader · stringnosniff.
401WWW-Authenticateheader · string
errorobjectrequiredShowHide 4 fields
order_idstring · uuididempotency_conflictonly: the order the key already belongs to.codestringrequiredvalidation_error(400): the request is not valid; seefields.invalid_api_key(401): no key, a malformed, unknown or revoked key, or a key this server did not issue.api_key_expired(401): the key is past its 90 days. Create a new one.account_not_approved(403): staff have not approved the account yet.account_suspended(403): the account is suspended. Results can still be read; new orders are refused.service_not_enabled(403): an order names a service that is not enabled for the account (or none is).permission_denied(403): any other refusal.not_found(404): no such path or object. Any unknown path under/api/vendor/answers this, with or without a key; so does an order that is not yours (exactly like one that does not exist) and a report that can't be downloaded now.method_not_allowed(405).idempotency_conflict(409): the Idempotency-Key was already used for a different order (error.order_id).in_progress(409): an order with this Idempotency-Key is still being placed; seeRetry-After.payload_too_large(413): the request body or an image is too large.unsupported_media_type(415): the request body or an image has the wrong type.mvr_state_unavailable(422): MVR can't be ordered for the license state through the vendor API.rate_limited(429): seeRetry-After. Also answered, instead of 401, after more than 100 failed keys from one address or 10 on one key in 10 minutes.internal_error(500).rate_limit_unavailable(503): try again shortly.price_unavailable(503): a service can't be priced right now.request_failed: any other error, with its HTTP status.
messagestringrequiredFor people; may change. Use
codein your code.fieldsobject | nullrequiredPer-field messages, for validation errors.
403errorobjectrequiredShowHide 4 fields
order_idstring · uuididempotency_conflictonly: the order the key already belongs to.codestringrequiredvalidation_error(400): the request is not valid; seefields.invalid_api_key(401): no key, a malformed, unknown or revoked key, or a key this server did not issue.api_key_expired(401): the key is past its 90 days. Create a new one.account_not_approved(403): staff have not approved the account yet.account_suspended(403): the account is suspended. Results can still be read; new orders are refused.service_not_enabled(403): an order names a service that is not enabled for the account (or none is).permission_denied(403): any other refusal.not_found(404): no such path or object. Any unknown path under/api/vendor/answers this, with or without a key; so does an order that is not yours (exactly like one that does not exist) and a report that can't be downloaded now.method_not_allowed(405).idempotency_conflict(409): the Idempotency-Key was already used for a different order (error.order_id).in_progress(409): an order with this Idempotency-Key is still being placed; seeRetry-After.payload_too_large(413): the request body or an image is too large.unsupported_media_type(415): the request body or an image has the wrong type.mvr_state_unavailable(422): MVR can't be ordered for the license state through the vendor API.rate_limited(429): seeRetry-After. Also answered, instead of 401, after more than 100 failed keys from one address or 10 on one key in 10 minutes.internal_error(500).rate_limit_unavailable(503): try again shortly.price_unavailable(503): a service can't be priced right now.request_failed: any other error, with its HTTP status.
messagestringrequiredFor people; may change. Use
codein your code.fieldsobject | nullrequiredPer-field messages, for validation errors.
404errorobjectrequiredShowHide 4 fields
order_idstring · uuididempotency_conflictonly: the order the key already belongs to.codestringrequiredvalidation_error(400): the request is not valid; seefields.invalid_api_key(401): no key, a malformed, unknown or revoked key, or a key this server did not issue.api_key_expired(401): the key is past its 90 days. Create a new one.account_not_approved(403): staff have not approved the account yet.account_suspended(403): the account is suspended. Results can still be read; new orders are refused.service_not_enabled(403): an order names a service that is not enabled for the account (or none is).permission_denied(403): any other refusal.not_found(404): no such path or object. Any unknown path under/api/vendor/answers this, with or without a key; so does an order that is not yours (exactly like one that does not exist) and a report that can't be downloaded now.method_not_allowed(405).idempotency_conflict(409): the Idempotency-Key was already used for a different order (error.order_id).in_progress(409): an order with this Idempotency-Key is still being placed; seeRetry-After.payload_too_large(413): the request body or an image is too large.unsupported_media_type(415): the request body or an image has the wrong type.mvr_state_unavailable(422): MVR can't be ordered for the license state through the vendor API.rate_limited(429): seeRetry-After. Also answered, instead of 401, after more than 100 failed keys from one address or 10 on one key in 10 minutes.internal_error(500).rate_limit_unavailable(503): try again shortly.price_unavailable(503): a service can't be priced right now.request_failed: any other error, with its HTTP status.
messagestringrequiredFor people; may change. Use
codein your code.fieldsobject | nullrequiredPer-field messages, for validation errors.
429Retry-Afterheader · integerSeconds to wait before trying again.
errorobjectrequiredShowHide 4 fields
order_idstring · uuididempotency_conflictonly: the order the key already belongs to.codestringrequiredvalidation_error(400): the request is not valid; seefields.invalid_api_key(401): no key, a malformed, unknown or revoked key, or a key this server did not issue.api_key_expired(401): the key is past its 90 days. Create a new one.account_not_approved(403): staff have not approved the account yet.account_suspended(403): the account is suspended. Results can still be read; new orders are refused.service_not_enabled(403): an order names a service that is not enabled for the account (or none is).permission_denied(403): any other refusal.not_found(404): no such path or object. Any unknown path under/api/vendor/answers this, with or without a key; so does an order that is not yours (exactly like one that does not exist) and a report that can't be downloaded now.method_not_allowed(405).idempotency_conflict(409): the Idempotency-Key was already used for a different order (error.order_id).in_progress(409): an order with this Idempotency-Key is still being placed; seeRetry-After.payload_too_large(413): the request body or an image is too large.unsupported_media_type(415): the request body or an image has the wrong type.mvr_state_unavailable(422): MVR can't be ordered for the license state through the vendor API.rate_limited(429): seeRetry-After. Also answered, instead of 401, after more than 100 failed keys from one address or 10 on one key in 10 minutes.internal_error(500).rate_limit_unavailable(503): try again shortly.price_unavailable(503): a service can't be priced right now.request_failed: any other error, with its HTTP status.
messagestringrequiredFor people; may change. Use
codein your code.fieldsobject | nullrequiredPer-field messages, for validation errors.
503Retry-Afterheader · integerSeconds to wait before trying again.
errorobjectrequiredShowHide 4 fields
order_idstring · uuididempotency_conflictonly: the order the key already belongs to.codestringrequiredvalidation_error(400): the request is not valid; seefields.invalid_api_key(401): no key, a malformed, unknown or revoked key, or a key this server did not issue.api_key_expired(401): the key is past its 90 days. Create a new one.account_not_approved(403): staff have not approved the account yet.account_suspended(403): the account is suspended. Results can still be read; new orders are refused.service_not_enabled(403): an order names a service that is not enabled for the account (or none is).permission_denied(403): any other refusal.not_found(404): no such path or object. Any unknown path under/api/vendor/answers this, with or without a key; so does an order that is not yours (exactly like one that does not exist) and a report that can't be downloaded now.method_not_allowed(405).idempotency_conflict(409): the Idempotency-Key was already used for a different order (error.order_id).in_progress(409): an order with this Idempotency-Key is still being placed; seeRetry-After.payload_too_large(413): the request body or an image is too large.unsupported_media_type(415): the request body or an image has the wrong type.mvr_state_unavailable(422): MVR can't be ordered for the license state through the vendor API.rate_limited(429): seeRetry-After. Also answered, instead of 401, after more than 100 failed keys from one address or 10 on one key in 10 minutes.internal_error(500).rate_limit_unavailable(503): try again shortly.price_unavailable(503): a service can't be priced right now.request_failed: any other error, with its HTTP status.
messagestringrequiredFor people; may change. Use
codein your code.fieldsobject | nullrequiredPer-field messages, for validation errors.