API v1
REST + JSON. Authentication: Authorization: Bearer tf_… (create keys in the portal). Base URL: https://fileservice.m-autoperf.com.
GET
/api/v1/meAccount, balance, active plan.POST
/api/v1/identifymultipart/form-data { file } → ECU identification without creating a job.GET
/api/v1/solutions?ecuFamilyId=…Solutions with AUTO / MANUAL / NONE mode for a family.POST
/api/v1/quote{ solutionCodes[], vehicleType, priority } → credits, category.POST
/api/v1/jobsmultipart/form-data { file, solutionCodes (csv), vehicleType, priority, make, model, engine, vin, … } → job.GET
/api/v1/jobs?status=&limit=&cursor=List your jobs.GET
/api/v1/jobs/{id}Job detail, identification, report, messages.GET
/api/v1/jobs/{id}/download?kind=mod|originalSigned download (302).POST
/api/v1/jobs/{id}/messages{ body } → post a message to the tuner.POST
/api/v1/jobs/{id}/revision{ message } → request a revision.GET
/api/v1/vehicles/makes | /models?makeId | /engines?modelIdVehicle database.GET
/api/v1/ecus?q=ECU families.GET
/api/v1/dtc?q=DTC library lookup.Webhooks
Events: job.created, job.delivered, job.need_info, job.refunded. Each POST carries x-tf-event and x-tf-signature (HMAC-SHA256 of the raw body with your webhook secret).
curl -X POST https://fileservice.m-autoperf.com/api/v1/jobs \ -H "Authorization: Bearer tf_xxx" \ -F "file=@original.bin" \ -F "solutionCodes=STAGE1,EGR" \ -F "vehicleType=CAR" -F "priority=NORMAL" \ -F "make=Volkswagen" -F "model=Golf" -F "engine=2.0 TDI 150"