TapScanner (pdf.tap.scanner) Data API
TapScanner's client splits its cloud work across a small job-pipeline API. Server-side text recognition is a multi-step flow: the app reserves a job at POST /v1/jobs/prepare, which answers with a job id and a pre-signed uploadURL for the scan, kicks off recognition at POST /v1/jobs/{id}/begin, then polls POST /v1/jobs/{id}/result until the job is done, returning the recognized text plus per-page output files that are each fetched from GET /v1/jobs/{id}/artifacts/{fileName}. A separate multipart service, POST /v1/convert/office, turns a scanned PDF into an editable DOCX, while POST /v1/licenses/redeem validates a promo redeemCode against a deviceId to unlock the premium entitlement. Every call except redemption is gated by an integrity_token header carrying a Google Play Integrity token.
TapScanner is a camera-to-PDF scanner and document editor from Tap AI whose heavy lifting is split between on-device text recognition and a set of cloud APIs. The app drives a multi-step server-side recognition pipeline (reserve a job, upload the scan, start recognition, poll for the result, then download per-page text), a document-conversion service that turns scanned PDFs into editable DOCX files, and a license-redemption call that unlocks premium features from a promo code. Every write call is gated by a Google Play Integrity token header, and the JSON payloads carry compact field names such as status, id, uploadURL, verified, redeemCode and deviceId.
Screenshots
API surface
OCR upload (reserve an upload slot)
POST
/v1/jobs/prepareopendataReserves a recognition job and returns the pre-signed URL plus job id used to push the scanned image for server-side text recognition.
Auth: integrity_token request header (Google Play Integrity token)
- status
- id
- uploadURL
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/jobs/prepare?retry=false HTTP/1.1 integrity_token: <play-integrity-token>{ "status": "ok", "id": "8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a", "uploadURL": "https://cdn.example.com/upload/8f3c1d2e..." }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's scan-and-recognize upload flowresponse model carries status, id and uploadURL
OCR start (kick off recognition)
POST
/v1/jobs/{id}/beginopendataStarts text recognition for an uploaded document image and returns the job id to poll for results.
Auth: integrity_token request header
- status
- id
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/begin HTTP/1.1 integrity_token: <play-integrity-token>{ "status": "started", "id": "8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a" }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's recognition start stepjob id is carried as a path segment
OCR status / result (poll recognized text)
POST
/v1/jobs/{id}/resultopendataPolls a recognition job and returns the recognized text plus the list of per-page output files once recognition completes.
Auth: integrity_token request header
- status
- startTimestamp
- files
- text
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/result HTTP/1.1 integrity_token: <play-integrity-token>{ "status": "done", "startTimestamp": 1737456000000, "files": ["page_1.txt", "page_2.txt"], "text": "Recognized document text..." }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's polling loop for finished jobsresult model carries status, startTimestamp, files and text
OCR result file download
GET
/v1/jobs/{id}/artifacts/{fileName}opendataDownloads a single recognized page/text artifact produced by the recognition pipeline.
Auth: integrity_token request header
- id
- fileName
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/artifacts/page_1.txt HTTP/1.1 integrity_token: <play-integrity-token><raw text/octet-stream body of the recognized page>Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's per-page text download step
PDF to DOCX conversion
POST
/v1/convert/officeopendataUploads a scanned PDF as multipart form data and returns the converted DOCX document.
Auth: integrity_token request header
- integrity_token
- file
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/convert/office HTTP/1.1 integrity_token: <play-integrity-token> Content-Type: multipart/form-data; boundary=----x ------x Content-Disposition: form-data; name="file"; filename="scan.pdf" Content-Type: application/pdf <binary pdf bytes><binary .docx ResponseBody>Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's PDF-to-DOCX export flowthe document is sent as multipart form data
Promo redeem-code verification (entitlement)
POST
/v1/licenses/redeemosintValidates a promotional redemption code against a device id to unlock the premium entitlement.
Auth: none beyond the redeem code in the JSON body
- redeemCode
- deviceId
- verified
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/licenses/redeem HTTP/1.1 Content-Type: application/json { "redeemCode": "SUMMER-DEAL-1234", "deviceId": "a1b2c3d4-e5f6-7890" }{ "verified": true }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's promo-code upgrade flowrequest model pairs a redeemCode with a deviceId
Data categories
- ocr
- document-conversion
- entitlements
- device-identity
Where teams use this data
Document-intake automation
Back-office pipelines drive the OCR job lifecycle — reserve an upload slot, kick off recognition, poll the result — landing searchable text in the DMS without a human opening the app.
Bulk format conversion
Contract and legal tooling batch-convert scans from PDF to DOCX for redlining, pushing files through the conversion endpoint and collecting editable documents.
Entitlement verification
Bundle partners verify redeem codes against device ids before granting premium features, keeping promotional licenses auditable.
Frequently asked questions
How does TapScanner's server-side text recognition pipeline work?
Recognition runs as a job pipeline over three calls: POST /v1/jobs/prepare reserves an upload slot and returns a job id plus a pre-signed uploadURL, POST /v1/jobs/{id}/begin starts recognition on the uploaded scan, and POST /v1/jobs/{id}/result is polled until the status is done, returning the recognized text and the files list of per-page outputs.
How are TapScanner's API calls authenticated?
Every recognition and conversion call carries an integrity_token request header holding a Google Play Integrity token; there is no session cookie or bearer token in the flow. The one exception is POST /v1/licenses/redeem, which is gated only by the redeemCode and deviceId pair in its JSON body.
What fields does the recognition result return?
The POST /v1/jobs/{id}/result response carries status, startTimestamp, files (a list of per-page output files) and text (the recognized document text). Individual pages are then downloaded via GET /v1/jobs/{id}/artifacts/{fileName}.
How does TapScanner convert a scanned PDF to DOCX?
The app uploads the scanned PDF to POST /v1/convert/office as multipart form data with a single file part, authenticated by the same integrity_token header, and the service streams back the converted DOCX document as a binary response body.
Topics
- tapscanner api
- pdf.tap.scanner ocr api
- tapscanner ocr pipeline
- tapscanner pdf to docx api
- tapscanner premium redeem code api
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.