Utilities
This page covers:
GET /api/ValidUploadFileTypesGET /api/VersionPUT /api/ConvertFilesGET /api/VizSeekFileCountGET /api/MonthlyUsage
GET /api/ValidUploadFileTypes
Section titled “GET /api/ValidUploadFileTypes”Return the currently allowed upload file extensions.
| Item | Value |
|---|---|
| Method | GET |
| Path | /api/ValidUploadFileTypes |
| Auth | App bearer token is sufficient |
| Response | String array |
Example
Section titled “Example”curl "https://your-server.example.com/api/ValidUploadFileTypes" \ -H "Authorization: Bearer APP_BEARER_TOKEN"Typical response
Section titled “Typical response”[ ".pdf", ".png", ".jpg", ".jpeg", ".webp", ".dxf", ".dwg", ".step", ".stp", ".stl"]GET /api/Version
Section titled “GET /api/Version”Return the API version and the engine/backend version.
| Item | Value |
|---|---|
| Method | GET |
| Path | /api/Version |
| Auth | No bearer token |
| Response | JSON object with apiVersion and engineVersion |
Example
Section titled “Example”curl "https://your-server.example.com/api/Version"Typical response
Section titled “Typical response”{ "apiVersion": "1.2.345", "engineVersion": "2026.05.08"}PUT /api/ConvertFiles
Section titled “PUT /api/ConvertFiles”Convert one or more 3D files to either STL or STEP and return a ZIP as base64 text.
| Item | Value |
|---|---|
| Method | PUT |
| Path | /api/ConvertFiles |
| Auth | User bearer token |
| Content-Type | application/json |
| Response | Plain base64 string containing a ZIP file |
Query parameters
Section titled “Query parameters”| Parameter | Required | Notes |
|---|---|---|
fileNames | Yes | Comma-separated file names, in the same order as the uploaded file array |
conversionExtension | Yes | stl or step |
useCompanyFolder | No | Internal-use option |
Request body format
Section titled “Request body format”The body is a JSON string whose contents are a JSON array of base64-encoded file byte arrays:
"[\"BASE64_FILE_1\",\"BASE64_FILE_2\"]"Python example
Section titled “Python example”import base64import jsonimport requests
files = []for path in ["part1.step", "part2.step"]: with open(path, "rb") as f: files.append(base64.b64encode(f.read()).decode("ascii"))
body = json.dumps(json.dumps(files))
resp = requests.put( f"{server}/api/ConvertFiles?fileNames=part1.step,part2.step&conversionExtension=stl", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", }, data=body,)resp.raise_for_status()
zip_bytes = base64.b64decode(resp.text)with open("converted.zip", "wb") as f: f.write(zip_bytes)GET /api/VizSeekFileCount
Section titled “GET /api/VizSeekFileCount”Return the current database file count for the authenticated user’s company.
| Item | Value |
|---|---|
| Method | GET |
| Path | /api/VizSeekFileCount |
| Auth | User bearer token |
| Response | Integer |
Example
Section titled “Example”curl "https://your-server.example.com/api/VizSeekFileCount" \ -H "Authorization: Bearer USER_BEARER_TOKEN"GET /api/MonthlyUsage
Section titled “GET /api/MonthlyUsage”Return file-count and token-usage summary for the current month or a historical billed month.
| Item | Value |
|---|---|
| Method | GET |
| Path | /api/MonthlyUsage |
| Auth | User bearer token |
| Response | MonthlyUsageResponse JSON |
Query parameters
Section titled “Query parameters”| Parameter | Required | Notes |
|---|---|---|
year | No | Use with month for historical data |
month | No | Use with year for historical data |
Behavior
Section titled “Behavior”- If
yearandmonthare both omitted, the endpoint returns live current-month usage. - If one is missing, the endpoint still falls back to current-month usage.
- If both are present and they match the current month, the endpoint returns live current-month usage.
- If both are present for a past month, the endpoint returns the archived monthly invoice row if one exists.
Example
Section titled “Example”curl -G "https://your-server.example.com/api/MonthlyUsage" \ -H "Authorization: Bearer USER_BEARER_TOKEN" \ --data-urlencode "year=2026" \ --data-urlencode "month=4"Example response
Section titled “Example response”{ "BillingPeriod": "08/01/2025 - 08/31/2025", "FilePlanLimit": 25000, "RemainingFiles": 18345, "FileCount": { "Doc": 6, "2D": 555, "3D": 1212, "Photo": 188, "Total": 6655 }, "TokenPlanLimit": 6000, "RemainingTokens": 5849.6, "TokenUsage": { "TokenFileIndex": 5.0, "TokenTableIndex": 0.0, "TokenStorage": 133.1, "TokenVSearch": 8.0, "TokenTSearch": 0.5, "TokenRAG": 1.0, "TokenCompare": 2.5, "Token2DPMI": 0.3, "Token3DConvert": 0.0, "Total": 150.4 }}