Skip to main content

Typed Python client for the Syvain Metrics REST API

Project description

Syvain Metrics API Client

Typed Python client for the Syvain Metrics REST API.

This package maps directly onto the REST surface for experiments, folders, metrics, annotations, ingestion keys, and comparison queries. If you only need to record metrics from a training or evaluation job, use syvain-metrics-collector instead.

Install

uv add syvain-metrics-api-client

Authentication

Use an explicit API key:

from syvain_metrics_api_client import SyvainMetricsApiClient

client = SyvainMetricsApiClient("ak_org_...")

Use installed Syvain CLI auth:

client = SyvainMetricsApiClient("local")

local reads ~/.config/syvain-metrics/auth.json.

Usage

from syvain_metrics_api_client import ComparisonMetricSeries, SyvainMetricsApiClient

client = SyvainMetricsApiClient("local")

experiment = client.create_experiment(
    "mamba-run-001",
    description="Baseline mamba training run",
    metadata={"model": "mamba"},
).experiment

client.ingest_metrics(
    experiment.id,
    [
        {
            "client_event_id": "mamba-run-001/loss/1",
            "name": "loss",
            "value": 0.42,
            "step": 1,
            "metadata": {"split": "train"},
        }
    ],
    sync=True,
)

rows = client.compare_metrics(
    [
        ComparisonMetricSeries(
            experiment_id=experiment.id,
            metric_name="loss",
            metadata_key="split",
            metadata_value="train",
        )
    ],
    limit=500,
)

Every metric must include a stable client_event_id. Reuse the same value when retrying the same event so ingestion can remain idempotent.

Ingest and annotation creation calls mint and cache ingestion keys per experiment. General API calls use the configured API key directly.

Client Surface

Folders:

  • list_folders(...)
  • create_folder(...)
  • get_folder(...)
  • patch_folder(...)
  • rename_folder(...)
  • move_folder(...)

Experiments:

  • list_experiments(...)
  • create_experiment(...)
  • get_experiment(...)
  • update_experiment_status(...)
  • move_experiment(...)

Metrics:

  • list_metrics(...)
  • compare_metrics(...)
  • ingest_metrics(...)
  • list_metric_catalog(...)

Ingestion keys:

  • list_ingestion_keys(...)
  • create_ingestion_key(...)
  • revoke_ingestion_key(...)
  • forget_ingestion_credential(...)

Annotations:

  • list_annotations(...)
  • create_annotation(...)

Authentication:

  • auth_status()

Host and Timeouts

The client defaults to https://metrics.syvain.com.

client = SyvainMetricsApiClient(
    "ak_org_...",
    host="https://metrics.syvain.com",
    timeout=10.0,
    ingest_timeout=60.0,
)

timeout applies to ordinary API calls. ingest_timeout applies to metric and annotation ingestion calls, which may wait for synchronous ingestion when sync=True.

Write Retries and Idempotency

The client retries transient request failures for idempotent write operations. For POST and PATCH requests it sends a generated Idempotency-Key header and reuses that key across retry attempts for the same logical request.

Metric ingestion idempotency is controlled by each metric's client_event_id. Use deterministic IDs derived from the run, metric name, step, and series metadata when the same event may be retried by caller code.

Errors

All package-specific failures inherit from MetricsApiError.

  • MetricsApiRequestError: the API returned an HTTP error or could not be reached
  • MetricsApiResponseError: the API returned a successful response that did not match the expected schema
  • MetricsApiAuthError: local CLI auth was requested but unavailable or invalid

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

syvain_metrics_api_client-0.0.95.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

syvain_metrics_api_client-0.0.95-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file syvain_metrics_api_client-0.0.95.tar.gz.

File metadata

  • Download URL: syvain_metrics_api_client-0.0.95.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for syvain_metrics_api_client-0.0.95.tar.gz
Algorithm Hash digest
SHA256 8f4db246622719f25bfee43e9f391298a428e1f62841c1333404b01296f98bd1
MD5 7502a819c690b826ade44793c1ad4a2d
BLAKE2b-256 7cabd173d3636209f7ac235311f7915ed775b49b8c490bd4f4a24a822f683a91

See more details on using hashes here.

File details

Details for the file syvain_metrics_api_client-0.0.95-py3-none-any.whl.

File metadata

  • Download URL: syvain_metrics_api_client-0.0.95-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for syvain_metrics_api_client-0.0.95-py3-none-any.whl
Algorithm Hash digest
SHA256 4e43837034ad757c58428bcccbda722fbd4695cf1a19c572a806565f7b753efb
MD5 ef9b42b41563d0699d6f466d1cdeb2af
BLAKE2b-256 43f3cf3d12a2005b2688c38ce8dbf121cd3a1e822e57b31589ed58000c85528d

See more details on using hashes here.

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