Every PDF tool,
ready for Flutter.
Secure email and Google login, rotating 60-day sessions, file processing, document history and self-hosted AI through one consistent JSON API.
Quickstart
The Flutter app logs in once, stores tokens in Keychain/Keystore, uploads a file, processes it, then downloads the result with the same Bearer access token.
https://pdf.techicomm.com/api/v1Production accepts HTTPS only.Login and token refresh
Raw tokens are displayed only in the response and stored as SHA-256 hashes on the server. Put them in flutter_secure_storage, never SharedPreferences.
curl -X POST "https://pdf.techicomm.com/api/v1/auth/login.php" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"StrongPass1","device_name":"Flutter app"}'{
"status": true,
"message": "",
"data": {
"user": {"id": 42, "name": "PDFPrime User", "plan": "free"},
"auth": {
"access_token": "pdfm_at_...",
"expires_in": 900,
"refresh_token": "pdfm_rt_...",
"refresh_expires_in": 5184000
}
}
}One workflow for every file tool
POST /jobs/upload.php
Authorization: Bearer ACCESS_TOKEN
Content-Type: multipart/form-data
tool=compress
files[]=@document.pdfPOST /jobs/process.php
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{"job_id":"32_character_job_id","options":{"compression_level":"recommended"}}Use GET /jobs/status.php?id=JOB_ID for status and GET /jobs/download.php?id=JOB_ID for the private output.
Available endpoints
POST/auth/register.phpCreate account and tokens
POST/auth/login.phpEmail/password login
POST/auth/firebase.phpGoogle/Firebase login
POST/auth/refresh.phpRotate token pair
POST/auth/logout.phpRevoke mobile session
GET/user/profile.phpProfile and plan limits
GET/user/jobs.phpDocument history
GET/tools/index.phpTool catalog and option schemas
POST/jobs/upload.phpSecure multipart upload
POST/jobs/process.phpProcess an uploaded job
GET/jobs/status.phpCheck job status
GET/jobs/download.phpDownload protected output
POST/ai/generate.phpGenerate AI text
30 file-processing APIs
Call /tools/index.php to obtain live extensions, file-count rules and option schemas.
mergesplitcompresspdf-to-jpgjpg-to-pdfword-to-pdfexcel-to-pdfppt-to-pdfrotatewatermarkprotectunlockextract-pagesdelete-pagesreorder-pagescompress-jpgcompress-pngresize-imagecrop-imageconvert-imagewebp-to-jpgpng-to-webpwebp-to-pngavif-to-jpgpng-to-avifavif-to-pngimage-to-base64image-to-textremove-backgroundchange-backgroundConsistent responses
Every JSON endpoint returns only status, message and data at the top level. List endpoints return the array directly in data.
{
"status": false,
"message": "Please check the supplied fields.",
"data": {
"code": "validation_failed",
"request_id": "b347...",
"fields": {"email": "Enter a valid email address."}
}
}401token_expiredRefresh once, save the new pair and retry.404job_not_foundThe job is missing, expired or belongs to another user.422processing_failedThe file or tool options could not be processed.429rate_limitedWait for the Retry-After interval.