Skip to main content

Python API client for MiViA (Microstructure Analysis)

Project description

MiViA Python Client

Python API client for MiViA (Microstructure Analysis).

Installation

pip install mivia

Configuration

Set your API key as environment variable:

For linux:

export MIVIA_API_KEY="your-api-key"
export MIVIA_BASE_URL="https://app.mivia.ai/api"  # optional, default
export MIVIA_PROXY="http://proxy:8080"  # optional, proxy URL

For Windows (Powershell):

$env:MIVIA_API_KEY = 'your-api-key'
$env:MIVIA_BASE_URL = 'https://app.mivia.ai/api'  # optional, default
$env:MIVIA_PROXY = 'http://proxy:8080'  # optional, proxy URL

Usage

Async Client

import asyncio
from mivia import MiviaClient

async def main():
    async with MiviaClient() as client:
        # List models
        models = await client.list_models()
        print(f"Models: {[m.display_name for m in models]}")

        # High-level: analyze images
        jobs = await client.analyze(
            file_paths=["image1.png", "image2.png"],
            model_id=models[0].id,
            wait=True,
        )

        for job in jobs:
            print(f"Job {job.id}: {job.status}")

        # Download report
        await client.download_pdf(
            job_ids=[j.id for j in jobs],
            output_path="report.pdf",
        )

asyncio.run(main())

Sync Client

from mivia import SyncMiviaClient

client = SyncMiviaClient()

# List models
models = client.list_models()

# Get customizations for a model
customizations = client.get_model_customizations(models[0].id)

# Upload and analyze with customization
jobs = client.analyze(
    file_paths=["image.png"],
    model_id=models[0].id,
    customization_id=customizations[0].id if customizations else None,
)

# Download report
client.download_csv(
    job_ids=[j.id for j in jobs],
    output_path="report.zip",
)

# List all jobs for a model
from mivia import JobStatus

all_jobs = client.list_all_jobs(model_id=models[0].id)

# Filter by status
failed_jobs = client.list_all_jobs(
    model_id=models[0].id,
    status=JobStatus.FAILED,
)

# Filter by multiple statuses
active_jobs = client.list_all_jobs(
    model_id=models[0].id,
    status=[JobStatus.PENDING, JobStatus.NEW],
)

CLI

# List models
mivia models

# List customizations for a model
mivia customizations MODEL_UUID

# Upload images
mivia upload image1.png image2.png

# Analyze (upload + run + wait) - supports model name or UUID
mivia analyze image.png --model "Decarburization"
mivia analyze image.png --model MODEL_UUID

# Analyze with customization (by name or UUID)
mivia analyze image.png --model "Test" --customization "Template Name"

# List available customizations for analyze
mivia analyze --model MODEL_UUID --list-customizations

# List jobs
mivia jobs list

# List jobs for specific model (by name or UUID)
mivia jobs list --model "Grain Size"

# List all jobs (fetch all pages)
mivia jobs list --model "Grain Size" --all

# Filter by status
mivia jobs list --model "Grain Size" --status FAILED --all
mivia jobs list --model "Grain Size" --status PENDING,FAILED --all

# Get recent job IDs (pipeable)
mivia jobs recent-ids --since 1h
mivia jobs recent-ids --since 2d --model "Grain Size"

# Get job details
mivia jobs get JOB_UUID

# Wait for jobs
mivia jobs wait JOB_UUID1 JOB_UUID2

# Download PDF report
mivia report pdf JOB_UUID -o report.pdf

# Download CSV report
mivia report csv JOB_UUID -o report.zip --no-images

# Show config
mivia config

# Use proxy
mivia --proxy http://proxy:8080 models

Proxy Configuration

Proxy can be configured via parameter, CLI option, or environment variable.

Library

from mivia import MiviaClient, SyncMiviaClient

# Via parameter (highest priority)
async with MiviaClient(proxy="http://proxy:8080") as client:
    models = await client.list_models()

# Sync client
client = SyncMiviaClient(proxy="http://proxy:8080")
models = client.list_models()

# Via environment variable (MIVIA_PROXY)
# export MIVIA_PROXY="http://proxy:8080"
async with MiviaClient() as client:
    models = await client.list_models()

CLI

# Via --proxy option
mivia --proxy http://proxy:8080 models
mivia --proxy http://proxy:8080 analyze image.png --model "Decarburization"

# Via environment variable
export MIVIA_PROXY="http://proxy:8080"
mivia models

# Verify proxy configuration
mivia --proxy http://proxy:8080 config

Priority Order

  1. Explicit proxy parameter / CLI --proxy option
  2. MIVIA_PROXY environment variable
  3. Standard proxy env vars (HTTP_PROXY, HTTPS_PROXY) via httpx defaults
  4. No proxy (direct connection)

API Reference

MiviaClient

Method Description
upload_image(path) Upload single image
upload_images(paths) Upload multiple images
list_images() List uploaded images
delete_image(id) Delete image
list_models() List available models
get_model_customizations(id) Get model customizations
get_recent_job_ids(since, model_id) Get IDs of recently created jobs
create_jobs(image_ids, model_id) Create computation jobs
get_job(id) Get job details with results
list_jobs() List jobs with pagination
list_all_jobs(model_id, status) List all jobs with auto-pagination and filtering
wait_for_job(id) Poll until job completes
wait_for_jobs(ids) Wait for multiple jobs
download_pdf(job_ids, path) Download PDF report
download_csv(job_ids, path) Download CSV report
analyze(paths, model_id) High-level: upload + run + wait

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mivia-0.2.0.tar.gz (42.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mivia-0.2.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file mivia-0.2.0.tar.gz.

File metadata

  • Download URL: mivia-0.2.0.tar.gz
  • Upload date:
  • Size: 42.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mivia-0.2.0.tar.gz
Algorithm Hash digest
SHA256 514edf66582cde7cf36e0b0b16b961c33af6bf5f1d5400751e896c6a3d0b08d6
MD5 26712aee1a66a941b131a9734df11290
BLAKE2b-256 f84f021bd1018db139e86cf3c824589c3586601f2eca684f29c4991cc1e06e81

See more details on using hashes here.

Provenance

The following attestation bundles were made for mivia-0.2.0.tar.gz:

Publisher: release.yml on MiViA-GmbH/MiViA-API-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mivia-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mivia-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mivia-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24cbd3ef82fa79fd996875c6287d1de1facb67f0fb699d0d229de244b24f5ea6
MD5 339cd83f5bde569b17be2e7174aa0a78
BLAKE2b-256 847fef8fb89ad9327e7e5fcba009fbc442f03c9c07883ac74999fdd041147a14

See more details on using hashes here.

Provenance

The following attestation bundles were made for mivia-0.2.0-py3-none-any.whl:

Publisher: release.yml on MiViA-GmbH/MiViA-API-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page