CIPHER - Convert, Integrate, Parse, Handle, Extract & Restructure API

PDF to Structured Data ConverterAbyss Hackathon 2025 SubmissionGoal: Automate PDF → JSON, MD, or CSVTransform unstructured PDF documents into structured

Input

Send these Fields as input. A Field not listed here is refused.

data

Upload your PDF to be parsed

An https URL or an upload id.

  • Type: string
  • Required: yes
  • Length in characters: at least 1

output_type

Required Output Format

  • Type: string
  • Required: yes
  • Allowed values: specified-json, csv, markdown

json_schema

Add the required JSON schema for the output

  • Type: string
  • Required: no
  • Length in characters: at most 30000

enable_redaction

Do you want to enforce STRICT privacy rules? (BETA)

  • Type: string
  • Required: yes
  • Allowed values: True, False

Run it

One call presses the Widget and answers the run once its status is succeeded or failed, however long it takes. The key is read from ABYSS_API_KEY. Install the library with npm install abysshub or pip install abysshub; cURL sends the Fields as a form.

JavaScript

// index.mjs
import Abyss, { file } from "abysshub";

const abyss = new Abyss();

const run = await abyss.run("widget_337", {
  data: file("report.pdf"),
  output_type: "markdown",
  enable_redaction: "True",
});

for (const path of await run.save("output")) {
  console.log(path);
}

Python

from abysshub import Abyss, file

abyss = Abyss()

run = abyss.run("widget_337", {
    "data": file("report.pdf"),
    "output_type": "markdown",
    "enable_redaction": "True",
})

for path in run.save("output"):
    print(path)

cURL

curl https://api.abysshub.com/v1/widgets/widget_337/runs \
  -H "Authorization: Bearer $ABYSS_API_KEY" \
  -F data=@report.pdf \
  -F output_type=markdown \
  -F enable_redaction=True

A succeeded run carries its result and its output_files. Their URLs are signed for each read: re-read the run, never store a URL. A run still queued or running in the answer (after an hour, or when the API is busy) is read again at its Location with ?wait=true.

More

Keys, files, errors and limits: API access.