A purpose-built foundation embedding model designed to generalize across domains, accelerate development, and power forecasting, anomaly detection, optimization, and other mission-critical time-series applications — without rebuilding models from scratch.
Anomaly detection: Identify unusual patterns in time series data
Clustering: Group similar time series together
Classification: Categorize time series into predefined classes
Forecasting: Improve time series predictions
Similarity search: Find similar patterns across large datasets
CHARM is currently available in private preview.
Interested in early access? Request Now
Once your access is approved, follow the instructions below to install the Python SDK and get started. The SDK enables you to interact directly with the CHARM time-series embedding model and generate scalable embeddings from multivariate time series data.
Please contact us using the form below to receive a CHARM API key. Be sure to store your key securely, such as in your .zshrc file or another protected environment configuration.
Create an .env file in your project directory and export it as an environment variable:
This allows you to keep your credentials separate from your code and avoid hardcoding sensitive information.
CHARM_API_KEY=your-api-key CHARM_BASE_URL=https://ftse.c3ci.cloud/ftseInstall CHARM SDK
In order to use CHARM API using Python, you can install CHARM SDK for Python using pip:
pip install c3_charm
from c3_charm import CharmClient from dotenv import load_dotenv import os # Load environment variables from .env file load_dotenv() # Get API key and base URL from environment variables api_key = os.getenv("CHARM_API_KEY", "your-api-key") base_url = os.getenv("CHARM_BASE_URL", "https://ftse.c3ci.cloud/ftse") # Create a client client = CharmClient( base_url=base_url, api_key=api_key, timeout=30, # Increased timeout for potentially large requests max_retries=3 # Automatically retry failed requests ) # Generate embeddings for time series data response = client.embeddings.create( descriptions=[["engine", "temperature"], ["fan", "speed"]], ts_array=[ # First time series (10 timesteps, 2 channels) [ [0.1, 0.2], [0.3, 0.4], [0.5, 0.6], [0.7, 0.8], [0.9, 1.0], [1.1, 1.2], [1.3, 1.4], [1.5, 1.6], [1.7, 1.8], [1.9, 2.0] ], # Second time series (10 timesteps, 2 channels) [ [2.1, 2.2], [2.3, 2.4], [2.5, 2.6], [2.7, 2.8], [2.9, 3.0], [3.1, 3.2], [3.3, 3.4], [3.5, 3.6], [3.7, 3.8], [3.9, 4.0] ] ], return_tensors="np", # Options: "list", "np", "torch" ) # Access the embeddings embeddings = response.embeds print(f"Model: {response.model}") print(f"Embeddings shape: {embeddings.shape}")
(client.embeddings.create): Suitable for smaller datasets or when simplicity is preferred. Processes batches sequentially, which can be slow for large datasets. Now includes progress tracking with tqdm. Avoid sending very large batches (>100 samples) in a single request to prevent timeouts.
(client.embeddings..async_create): Recommended for large datasets. Significantly faster due to concurrent processing with features like:
Cut through complexity and deliver results fast with C3 AI.
Our expert-led C3 AI Initial Production deployment gets your agentic AI application into production in just twelve weeks.