dexcost 0.9.0

Agent Unit Economics SDK for Rust — track end-to-end business-task costs for AI agents.
Documentation
{
  "_meta": {
    "version": "1.5.0",
    "observer_count": 28,
    "purpose": "Provider-owned usage observations only; this manifest contains no prices."
  },
  "observers": [
    {"service_key":"openai_embeddings","provider_name":"openai","provider_service":"embeddings","component":"external","domains":["api.openai.com"],"endpoints":["/v1/embeddings"],"response_path":"usage.total_tokens","usage_metric":"input_tokens","resource_type":"model","resource_path":"model","record_id_header":"x-request-id","source_url":"https://platform.openai.com/docs/api-reference/embeddings/create"},
    {"service_key":"cohere_embed","provider_name":"cohere","provider_service":"embed","component":"external","domains":["api.cohere.com"],"endpoints":["/v1/embed","/v2/embed"],"response_path":"meta.billed_units.input_tokens","usage_metric":"input_tokens","resource_type":"model","request_resource_path":"model","record_id_path":"id","source_url":"https://docs.cohere.com/v2/reference/embed"},
    {"service_key":"voyage_ai","provider_name":"voyageai","provider_service":"embeddings","component":"external","domains":["api.voyageai.com"],"endpoints":["/v1/embeddings","/v1/contextualizedembeddings"],"response_path":"usage.total_tokens","usage_metric":"input_tokens","resource_type":"model","resource_path":"model","source_url":"https://docs.voyageai.com/reference/embeddings-api"},
    {"service_key":"jina_embeddings","provider_name":"jina","provider_service":"embeddings","component":"external","domains":["api.jina.ai"],"endpoints":["/v1/embeddings"],"response_path":"usage.total_tokens","usage_metric":"input_tokens","resource_type":"model","resource_path":"model","source_url":"https://api.jina.ai/scalar"},
    {"service_key":"openai_tts","provider_name":"openai","provider_service":"text_to_speech","component":"text_to_speech","domains":["api.openai.com"],"endpoints":["/v1/audio/speech"],"request_character_count_path":"input","usage_metric":"characters","resource_type":"model","request_resource_path":"model","allowed_resource_ids":["tts-1","tts-1-hd"],"record_id_header":"x-request-id","source_url":"https://developers.openai.com/api/reference/resources/audio/subresources/speech/methods/create"},
    {"service_key":"elevenlabs_tts","provider_name":"elevenlabs","provider_service":"text_to_speech","component":"text_to_speech","domains":["api.elevenlabs.io"],"endpoints":["/v1/text-to-speech"],"response_quantity_header":"character-cost","usage_metric":"characters","resource_type":"model","request_resource_path":"model_id","allowed_resource_ids":["eleven_v3","eleven_multilingual_v2","eleven_flash_v2_5","eleven_flash_v2","eleven_turbo_v2_5","eleven_turbo_v2"],"default_resource_id":"eleven_multilingual_v2","record_id_header":"request-id","source_url":"https://elevenlabs.io/docs/api-reference/introduction"},
    {"service_key":"deepgram_transcription","provider_name":"deepgram","provider_service":"speech_to_text_pre_recorded","component":"speech_to_text","domains":["api.deepgram.com","api.eu.deepgram.com","api.au.deepgram.com"],"endpoints":["/v1/listen"],"response_path":"metadata.duration","usage_metric":"audio_seconds","resource_type":"sku","resource_query_parameter":"model","default_resource_id":"base-general","resource_variant":{"query_parameter":"language","equals":"multi","matched_suffix":":multilingual","default_suffix":":monolingual"},"quantity_multiplier_path":"metadata.channels","quantity_multiplier_query_parameter":"multichannel","record_id_path":"metadata.request_id","source_url":"https://developers.deepgram.com/reference/speech-to-text/listen-pre-recorded"},
    {"service_key":"deepgram_diarization","provider_name":"deepgram","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.deepgram.com","api.eu.deepgram.com","api.au.deepgram.com"],"endpoints":["/v1/listen"],"response_path":"metadata.duration","usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"speaker_diarization","query_any":[{"parameter":"diarize","operator":"truthy"},{"parameter":"diarize_model","operator":"present"}],"quantity_multiplier_path":"metadata.channels","quantity_multiplier_query_parameter":"multichannel","record_id_path":"metadata.request_id","source_url":"https://deepgram.com/pricing"},
    {"service_key":"deepgram_redaction","provider_name":"deepgram","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.deepgram.com","api.eu.deepgram.com","api.au.deepgram.com"],"endpoints":["/v1/listen"],"response_path":"metadata.duration","usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"redaction","query_any":[{"parameter":"redact","operator":"truthy"}],"quantity_multiplier_path":"metadata.channels","quantity_multiplier_query_parameter":"multichannel","record_id_path":"metadata.request_id","source_url":"https://deepgram.com/pricing"},
    {"service_key":"deepgram_keyterm_prompting","provider_name":"deepgram","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.deepgram.com","api.eu.deepgram.com","api.au.deepgram.com"],"endpoints":["/v1/listen"],"response_path":"metadata.duration","usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"keyterm_prompting","query_any":[{"parameter":"keyterm","operator":"present"}],"quantity_multiplier_path":"metadata.channels","quantity_multiplier_query_parameter":"multichannel","record_id_path":"metadata.request_id","source_url":"https://deepgram.com/pricing"},
    {"service_key":"assemblyai_transcription","provider_name":"assemblyai","provider_service":"speech_to_text_pre_recorded","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"}],"usage_metric":"audio_seconds","resource_type":"model","resource_path":"speech_model_used","quantity_multiplier_path":"audio_channels","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_keyterm_prompting","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speech_model_used","operator":"equals","value":"universal-3-5-pro"},{"path":"keyterms_prompt","operator":"non_empty"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"keyterm_prompting:universal-3-5-pro","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_prompting","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speech_model_used","operator":"equals","value":"universal-3-5-pro"},{"path":"prompt","operator":"non_empty"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"prompting:universal-3-5-pro","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_speaker_diarization","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speaker_labels","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"speaker_diarization","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_medical_mode","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"domain","operator":"equals","value":"medical-v1"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"medical_mode","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_speaker_identification","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speech_understanding.request.speaker_identification","operator":"non_empty"},{"path":"speech_understanding.response.speaker_identification.status","operator":"equals","value":"success"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"speaker_identification","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_translation","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speech_understanding.request.translation","operator":"non_empty"},{"path":"speech_understanding.response.translation.status","operator":"equals","value":"success"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"translation","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_custom_formatting","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"speech_understanding.request.custom_formatting","operator":"non_empty"},{"path":"speech_understanding.response.custom_formatting.status","operator":"equals","value":"success"}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"custom_formatting","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_entity_detection","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"entity_detection","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"entity_detection","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_sentiment_analysis","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"sentiment_analysis","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"sentiment_analysis","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_auto_chapters","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"auto_chapters","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"auto_chapters","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_key_phrases","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"auto_highlights","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"key_phrases","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_topic_detection","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"iab_categories","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"topic_detection","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_summarization","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"summarization","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"summarization","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_profanity_filtering","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"filter_profanity","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"profanity_filtering","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_pii_audio_redaction","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"redact_pii_audio","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"pii_audio_redaction","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_pii_text_redaction","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"redact_pii","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"pii_text_redaction","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"},
    {"service_key":"assemblyai_content_moderation","provider_name":"assemblyai","provider_service":"speech_to_text_addon","component":"speech_to_text","domains":["api.assemblyai.com","api.eu.assemblyai.com"],"endpoints":["/v2/transcript"],"response_path":"audio_duration","response_all":[{"path":"status","operator":"equals","value":"completed"},{"path":"content_safety","operator":"equals","value":true}],"usage_metric":"audio_seconds","resource_type":"sku","fixed_resource_id":"content_moderation","record_id_path":"id","source_url":"https://www.assemblyai.com/docs/pre-recorded-audio/api-reference/transcripts/get"}
  ]
}