How can we help you today?

Introduction & Overview #

This document explains the specifications of the PREP Checker API.

The Checker workflow for a PDF document involves two main steps:

  1. Upload file to Checker- Start the checker process by uploading the PDF file.
  2. Fetch the status & Download report- Retrieve the current processing status and results.

API Endpoints

  1. Upload File to Checker

    Endpoint: POST /pdf-content/pdf/accessibility-check-init/

    • Initiates the checker process for the PDF.
    • Returns a unique SourceId associated with the uploaded file.
  2. Check Request Status & Download Report

    Endpoint: POST /pdf-content/pdf/check-status/

    • Retrieves the current status of the checker process.
    • Returns the checker results in JSON format for the given file.
    • Provides a downloadable URL of the checker report (if completed).

Base URL #

API Endpoints (Base URL)

BASE_URL = "https://api-pdfservice.continualengine.com"

Authentication #

Every request must include these headers:

  1. api-id: <your_api_id>
  2. app-key: <your_app_key>

Initiate Accessibility Check #

Initiate Accessibility Check

Endpoint

POST {BASE_URL}/pdf-content/pdf/accessibility-check-init/

Python Example

import requests

import json

BASE_URL = “https://api-pdfservice.continualengine.com”

headers = {

“api-id”: “”,

“app-key”: “”,

“Accept”: “application/json, text/plain, */*”

}

files = {

“pdf1”: open(“/path/to/your.pdf”, “rb”)

}

response =

requests.post(f”{BASE_URL}/pdf-content/pdf/accessibility-check-init/”, headers=headers, files=files)

print(response.json())

cURL Example

curl --location

“https://api-pdfservice.continualengine.com/pdf-content/pdf/accessibility-c heck-init/” \

–header “api-id: ” \

–header “app-key: ” \

–form ‘pdf1=@”/path/to/your.pdf”‘

Sample Response:

Response JSON Status code
{“message”: “ok”, “source_id”: 1423} 200

Check Request Status #

Check Request Status

Endpoint

POST {BASE_URL}/pdf-content/pdf/check-status/

Python Example

import requests

import json

BASE_URL = “https://api-pdfservice.continualengine.com”

headers = {

“api-id”: “”,

“app-key”: “”,

“Accept”: “application/json, text/plain, */*”

}

data = {

“action”: “doc-checker”,

“source_id”: “”

}

response = requests.post(f”{BASE_URL}/pdf-content/pdf/check-status/”, headers=headers, data=data)

print(response.json())

cURL Example

curl –location

“https://api-pdfservice.continualengine.com/pdf-content/pdf/check-status/” \

–header “api-id: ” \

–header “app-key: ” \

–form ‘action=”doc-checker”‘ \

–form ‘source_id=””‘

Sample Response

Status Response JSON HTTP Status Code
In Progress {“file_id”: “”, “status”: “in-progress”, “result”: {}} 200
Completed {“file_id”: “”, “status”: “completed”, “result”: {“checkerData”: []}, “file_url” : } 200
Failed {“status”: “failed”, “error”: “Internal error.”} 417

Workflow #

  1. Call Initiate Accessibility Check → get source_id.
  2. Poll Check Status with that source_id until status = completed.
    1. The response JSON includes the key file_url, which contains a direct S3 link to the downloadable report. (Note: This link will expire.)

Error Codes #

Error Codes

PREP can respond with errors with the below codes.

Error Response JSON Status code
Resource exhausted {“status”: “failed”, “error”: “Either out of resource quota or reaching rate limiting”} 429
Forbidden {“status”: “failed”: “error”: “Forbidden”} 403
Bad Request {“status”: “failed”: “error”: “Invalid argument”} 400
Internal error {“status”: “failed”, “error”: “Internal error.”} 500

Libraries (Dependencies) #

Whether you are using Python, JavaScript, Java, Ruby, or any other language, you can integrate with our API using the standard HTTP POST method.

Support #

You can reach out to the below contacts in case you have questions.

rajat.prakash@continualengine.com / shubham.doval@continualengine.com / support@continualengine.com

Do You Need Some Help? Don't Worry, We've Got You!

"*" indicates required fields

Step 1 of 3

This field is for validation purposes and should be left unchanged.
What is your goal?*