Use this file to discover all available pages before exploring further.
For LLM agents: documentation index at /llms.txt, full text at /llms-full.txt. Append .md to any page URL for plain markdown.
This guide walks you through building your first programmatic integration with AnomalyArmor. By the end, you’ll have a working data quality check that can run in your pipeline.
from anomalyarmor import Clientclient = Client()# List your data assetsassets = client.assets.list(limit=5)for asset in assets: print(f"{asset.qualified_name} ({asset.asset_type})")
You should see a list of your connected tables and views.
The most common integration pattern is checking data freshness before running a pipeline. Here’s a complete example:
from anomalyarmor import Clientfrom anomalyarmor.exceptions import StalenessErrordef run_pipeline(): client = Client() # Check that source data is fresh before processing try: client.freshness.require_fresh("snowflake.prod.warehouse.orders") print("Data is fresh, proceeding with pipeline...") # Your pipeline logic here except StalenessError as e: print(f"Pipeline aborted: data is {e.hours_since_update:.1f}h stale") raiseif __name__ == "__main__": run_pipeline()
For shell scripts and CI/CD, use the CLI directly:
#!/bin/bashset -e# Check freshness (exits 1 if stale)armor freshness check snowflake.prod.warehouse.orders# If we get here, data is freshecho "Data quality checks passed!"dbt run
Sign in to app.anomalyarmor.ai, open Settings → API Keys, and click Create Key. New keys are shown once - copy to a password manager or secrets manager immediately. Set the scope to read-only for pipeline gating or read-write if your integration needs to create metrics or acknowledge alerts.
Should I use the Python SDK or raw REST calls for my first integration?
Python SDK if you’re in Python or Airflow - it handles pagination, retries on 429, and error typing for you. Raw REST (curl or requests) if you’re in a different language, want zero dependencies, or are prototyping a webhook handler. Both paths are first-class.
How do I test an integration without affecting production monitoring?
Create a separate AnomalyArmor workspace (or use a sandbox project) with a non-production database connection. Integrations there can create/delete monitors freely without touching prod. When ready, swap the API key to production and re-run against real endpoints.
A freshness check at the start of your pipeline: one API call, one conditional exit. GET /api/v1/freshness/check?asset=my_table returns whether the table meets its SLA. If no, abort the pipeline. This pattern is 5 lines of code and catches the most common data issue (stale upstream).