POST/v1/auth/login

Returns access_token. Use it as the bearer token in subsequent requests.

curl -fsSL -X POST 'https://api.lumera.ltd/v1/auth/login' \
    -H "Content-Type: application/json" \
    -d '{
      "username": "YOUR_USERNAME",
      "password": "YOUR_PASSWORD"
    }'

POST/v1/auth/register

Creates an account and returns its access token.

curl -fsSL -X POST 'https://api.lumera.ltd/v1/auth/register' \
    -H "Content-Type: application/json" \
    -d '{
      "username": "YOUR_USERNAME",
      "password": "YOUR_PASSWORD"
    }'

GET/v1/session

Returns the account associated with the bearer token.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X GET 'https://api.lumera.ltd/v1/session' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

POST/v1/auth/logout

Revokes this bearer token. Other tokens are unaffected.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X POST 'https://api.lumera.ltd/v1/auth/logout' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

POST/v1/jobs

Send application/json with images containing filename and content_base64 (standard base64 without a data URL prefix). Up to 8 images, 20 MiB decoded each. Replace BASE64_IMAGE_BYTES below with the image bytes encoded as base64. Returns HTTP 202 with the new job ID in id.

num_iters accepts 1–30 reconstruction rounds; refinement_iters accepts 0–8 refinement rounds. Both are integers.

When local Hi3D is selected, optional hi3d_resolution accepts integer 512, 1024 or 1536 (1, 2 or 3 native passes; nominal grids 64³, 128³ or 192³). Omit it to use the administrator default (initially 1024). It controls object meshes, independently of reconstruction rounds, and does not change cloud generation.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X POST 'https://api.lumera.ltd/v1/jobs' \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -H "Content-Type: application/json" \
    --data '{
      "images": [
        {
          "filename": "reference.png",
          "content_base64": "BASE64_IMAGE_BYTES"
        }
      ],
      "num_iters": 1,
      "refinement_iters": 1
    }'

GET/v1/projects

Lists reconstruction projects belonging to the current account.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X GET 'https://api.lumera.ltd/v1/projects' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

GET/v1/jobs/{JOB_ID}

Returns the job object. Poll job.status until complete or failed. Available files appear in job.payload[18]; use each file’s relative_path as OUTPUT_PATH for downloads.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_JOB_ID="JOB_ID_FROM_SUBMISSION"

curl -fsSL -X GET "https://api.lumera.ltd/v1/jobs/$LUMERA_JOB_ID" \
    -H "Authorization: Bearer $LUMERA_TOKEN"

GET/v1/jobs/{JOB_ID}/artifacts.zip?kind=all

Downloads available GLB and Blender scene files as a ZIP archive. Set kind to all, glb or blend.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_JOB_ID="JOB_ID_FROM_SUBMISSION"

curl -fsSL -X GET "https://api.lumera.ltd/v1/jobs/$LUMERA_JOB_ID/artifacts.zip?kind=all" \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -o "lumera-results.zip"

GET/v1/job-files/{JOB_ID}/{OUTPUT_PATH}

Use the relative path returned by the job response and a token for the account that owns the job.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_JOB_ID="JOB_ID_FROM_SUBMISSION"
LUMERA_OUTPUT_PATH="RELATIVE_PATH_FROM_JOB"

curl -fsSL -X GET "https://api.lumera.ltd/v1/job-files/$LUMERA_JOB_ID/$LUMERA_OUTPUT_PATH" \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -o "output.glb"

GET/v1/jobs/{JOB_ID}/export/{OUTPUT_PATH}?format=obj

Exports an owned GLB or Blender scene as OBJ or STL. Set format to obj or stl; OUTPUT_PATH comes from the job response.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_JOB_ID="JOB_ID_FROM_SUBMISSION"
LUMERA_OUTPUT_PATH="RELATIVE_PATH_FROM_JOB"

curl -fsSL -X GET "https://api.lumera.ltd/v1/jobs/$LUMERA_JOB_ID/export/$LUMERA_OUTPUT_PATH?format=obj" \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -o "scene.obj"

GET/v1/platform

Returns enabled services, payment methods and package identifiers. No bearer token required.

curl -fsSL -X GET 'https://api.lumera.ltd/v1/platform'

GET/v1/account/history?limit=80

Returns credit transactions for this account. limit accepts 1 to 200.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X GET 'https://api.lumera.ltd/v1/account/history?limit=80' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

GET/v1/account/summary

Returns available credits, reserved credits, payment packages, check-in status and recent history.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X GET 'https://api.lumera.ltd/v1/account/summary' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

POST/v1/account/checkin

Claims the daily reward once for the current account.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X POST 'https://api.lumera.ltd/v1/account/checkin' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

POST/v1/payments/orders

Use a package_id and an available method from GET /v1/platform. Returns the order ID in id (ORDER_ID below), with checkout or QR information; creating an order does not confirm payment.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X POST 'https://api.lumera.ltd/v1/payments/orders' \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "method": "AVAILABLE_METHOD_FROM_PLATFORM",
      "package_id": "PACKAGE_ID_FROM_PLATFORM"
    }'

GET/v1/payments/orders/{ORDER_ID}

Returns the current state of an order owned by this account.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_ORDER_ID="ORDER_ID_FROM_PAYMENT"

curl -fsSL -X GET "https://api.lumera.ltd/v1/payments/orders/$LUMERA_ORDER_ID" \
    -H "Authorization: Bearer $LUMERA_TOKEN"

DELETE/v1/payments/orders/{ORDER_ID}

Closes a pending order. A successful payment must use the refund endpoint.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_ORDER_ID="ORDER_ID_FROM_PAYMENT"

curl -fsSL -X DELETE "https://api.lumera.ltd/v1/payments/orders/$LUMERA_ORDER_ID" \
    -H "Authorization: Bearer $LUMERA_TOKEN"

GET/v1/payments/orders?limit=20&offset=0

Lists paid purchases and their refund state. Use limit and offset for pagination.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"

curl -fsSL -X GET 'https://api.lumera.ltd/v1/payments/orders?limit=20&offset=0' \
    -H "Authorization: Bearer $LUMERA_TOKEN"

POST/v1/payments/orders/{ORDER_ID}/refund

Requests a refund for a paid order. Repeating the request returns the same refund.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_ORDER_ID="ORDER_ID_FROM_PAYMENT"

curl -fsSL -X POST "https://api.lumera.ltd/v1/payments/orders/$LUMERA_ORDER_ID/refund" \
    -H "Authorization: Bearer $LUMERA_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "reason": "No longer needed"
    }'

GET/v1/payments/orders/{ORDER_ID}/refund

Returns the current refund status. A refund is complete only when its status is succeeded.

LUMERA_TOKEN="ACCESS_TOKEN_FROM_LOGIN"
LUMERA_ORDER_ID="ORDER_ID_FROM_PAYMENT"

curl -fsSL -X GET "https://api.lumera.ltd/v1/payments/orders/$LUMERA_ORDER_ID/refund" \
    -H "Authorization: Bearer $LUMERA_TOKEN"