---
title: Portkey API Integration on Truto
slug: portkey
category: Artificial Intelligence
canonical: "https://truto.one/integrations/detail/portkey/"
---

# Portkey API Integration on Truto



**Category:** Artificial Intelligence  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 239 tools for Portkey that AI agents can call directly.

- **create_a_portkey_chat_completion** — Create a chat completion in Portkey by sending a conversation's messages and a model name. Returns: id, choices, created, model, system_fingerprint, object, usage. Required: messages, model.
- **list_all_portkey_realtimes** — Connect to the Portkey Realtime API WebSocket endpoint for streaming realtime sessions. Returns a WebSocket upgrade (101) response on success; the subsequent streaming session follows the provider's realtime protocol. The model query parameter is often required for OpenAI-style realtime sessions.
- **create_a_portkey_completion** — Create a text completion in Portkey by sending a prompt to a model via the AI gateway. Returns: id, choices, created, model, system_fingerprint, object, usage. Required: model, prompt.
- **list_all_portkey_collections** — List collections in a Portkey workspace, optionally filtered by name search. Returns each collection with id, slug, name, workspace_id, and parent_collection_id. Required: workspace_id.
- **create_a_portkey_collection** — Create a new collection in a Portkey workspace. Returns: id, slug. Required: name.
- **get_single_portkey_collection_by_id** — Get a single Portkey collection by id. Returns the collection object including id, slug, name, workspace_id, and parent_collection_id. Required: id.
- **update_a_portkey_collection_by_id** — Update a Portkey collection's name by id. Returns: id. Required: name.
- **delete_a_portkey_collection_by_id** — Delete a Portkey collection by id. Returns an empty response on success.
- **list_all_portkey_labels** — List labels in Portkey, optionally filtered by organisation, workspace, or name search. Returns: id, name, description, color_code, organisation_id, workspace_id, is_universal, created_at, last_updated_at, status, updated_at. Max 100 per page.
- **create_a_portkey_label** — Create a new label in Portkey. Returns the created label object including id, name, created_at, and updated_at. Required: name.
- **get_single_portkey_label_by_id** — Get a single Portkey label by id. Returns: id, name, organisation_id, workspace_id, created_at, updated_at. Required: id.
- **update_a_portkey_label_by_id** — Update an existing Portkey label by id. Returns the updated label object including id, name, created_at, and updated_at. Required: id.
- **delete_a_portkey_label_by_id** — Delete a Portkey label by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_prompts** — List prompts in Portkey, optionally filtered by collection, workspace, or search term. Returns: id, slug, name, collection_id, model, status, created_at, last_updated_at, object, version_id.
- **create_a_portkey_prompt** — Create a new prompt in Portkey. Returns: id, slug, version_id, object. Required: name, collection_id, string, parameters, virtual_key.
- **get_single_portkey_prompt_by_id** — Get a single Portkey prompt by id or slug. Returns: id, slug, name, collection_id, string, prompt_version, prompt_version_id, prompt_version_status, prompt_version_description, prompt_version_label_id, virtual_key, model, functions, tools, tool_choice, template_metadata, is_raw_template, status, created_at, last_updated_at, version_id, object. Required: id.
- **update_a_portkey_prompt_by_id** — Update a Portkey prompt's metadata and/or create a new version with updated template content. Set patch to true for partial version updates where omitted fields are inherited from the latest version. Returns: id, slug, prompt_version_id. Required: id.
- **delete_a_portkey_prompt_by_id** — Delete a Portkey prompt by id. Returns an empty 204 response on success.
- **list_all_portkey_prompt_versions** — List all versions of a prompt in Portkey. Returns: id, slug, version_id, object, name, workspace_id, organisation_id, status, owner_id, updated_by, created_at, last_updated_at, config, format. Required: prompt_id.
- **update_a_portkey_prompt_version_by_id** — Update the label of a specific prompt version in Portkey. Only label_id can be updated; version content (string, parameters, model) is immutable. Returns: id, slug, version_id, object, name. Required: prompt_id, id.
- **get_single_portkey_prompt_version_by_id** — Get a specific version of a prompt in Portkey by version id. Returns: id, slug, name, collection_id, string, prompt_version, prompt_version_id, prompt_version_status, prompt_version_description, prompt_version_label_id, virtual_key, model, functions, tools, tool_choice, template_metadata, is_raw_template, status, created_at, last_updated_at, version_id, object, version_description, total, data.…
- **portkey_prompt_make_defaults_bulk_update** — Set a specific version of a Portkey prompt as the default version. Returns an empty 200 response on success. Required: prompt_id, version.
- **list_all_portkey_prompts_partials** — List prompt partials in Portkey, optionally filtered by collection. Returns each partial's id, slug, and version_id. Optional: collection_id.
- **create_a_portkey_prompts_partial** — Create a new prompt partial in Portkey. Returns: id, slug, version_id. Required: name, string. Optional: workspace_id (required for Admin keys), version_description.
- **get_single_portkey_prompts_partial_by_id** — Get a single prompt partial in Portkey by its id or slug. Returns: id, slug, version_id. Required: id.
- **update_a_portkey_prompts_partial_by_id** — Update a prompt partial in Portkey by id. Returns: prompt_partial_version_id. Required: id.
- **delete_a_portkey_prompts_partial_by_id** — Delete a prompt partial in Portkey by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_partial_versions** — List all versions of a prompt partial in Portkey. Returns: version_id, version, version_description, string, created_at, updated_at, id, name, workspace_id, slug, organisation_id, status, owner_id, updated_by, last_updated_at, config, format, object. Required: prompt_partial_id.
- **portkey_partial_make_defaults_bulk_update** — Set a specific version as the default for a prompt partial in Portkey. Returns an empty object on success confirming the default version was set. Required: prompt_partial_id, version.
- **create_a_portkey_prompt_completion** — Execute a saved prompt template in Portkey to generate completions with variable substitution. Returns: status, headers, body. Required: prompt_id, variables. Hyperparameters must be passed at the root level alongside variables; max_tokens is deprecated — use max_completion_tokens instead.
- **create_a_portkey_prompt_render** — Render a Portkey prompt template by substituting its variable values. Returns: success, data. Required: prompt_id, variables. Hyperparameters such as max_completion_tokens and temperature are passed at the root level, not nested under hyperparameters. The max_tokens parameter is deprecated — use max_completion_tokens.
- **list_all_portkey_guardrails** — List guardrails in Portkey, optionally filtered by workspace or organisation. Returns: id, name, slug, organisation_id, workspace_id, status, created_at, last_updated_at, owner_id, updated_by, checks, actions, updated_at. Max 100 per page.
- **create_a_portkey_guardrail** — Create a new guardrail in Portkey with specified checks and actions. Returns the created guardrail including id, slug, name, checks, and actions. Required: name, checks, actions.
- **get_single_portkey_guardrail_by_id** — Get a specific Portkey guardrail by id (UUID or slug with guard_ prefix). Returns: id, slug, name, workspace_id, organisation_id, checks, actions, created_at, updated_at. Required: id.
- **update_a_portkey_guardrail_by_id** — Update an existing guardrail's name, checks, or actions in Portkey. Returns the updated guardrail object including id, name, slug, checks, actions, organisation_id, and workspace_id. Required: id.
- **delete_a_portkey_guardrail_by_id** — Delete an existing guardrail in Portkey by id (UUID or slug). Returns an empty 204 response on success. Required: id.
- **create_a_portkey_images_generation** — Create an image in Portkey by generating it from a text prompt with a specified model. Returns: b64_json, url, revised_prompt. Required: prompt.
- **create_a_portkey_images_edit** — Create an image edit in Portkey from an original image and a text prompt describing the desired changes, with an optional mask for targeted edits. Returns: b64_json, url, revised_prompt. Required: image, prompt.
- **create_a_portkey_images_variation** — Create variations of an existing image in Portkey. Returns the image variation response including created timestamp and a data array of generated image objects. Required: image.
- **create_a_portkey_embedding** — Create text embeddings through Portkey's AI Gateway. Returns: index, embedding, object. Required: model, input.
- **create_a_portkey_rerank** — Rerank documents by semantic relevance to a query using Portkey's unified interface to reranking models from Cohere, Voyage, Jina, Pinecone, Bedrock, and Azure AI. Returns the rerank response. Required: model, query, documents.
- **create_a_portkey_ocr** — Extract text and structured content from documents (PDFs and images) using OCR models in Portkey, supporting providers including Mistral AI and Azure AI Foundry. Returns: pages, model, usage_info. Required: model, document.
- **create_a_portkey_audio_speech** — Generate speech audio from text via Portkey's AI gateway. Returns a binary audio stream (application/octet-stream) with chunked transfer encoding — write the response body to a file to obtain the audio. Required: model, input, voice.
- **create_a_portkey_audio_transcription** — Create an audio transcription in Portkey by uploading an audio file with a specified model. Returns: text. Required: file, model.
- **create_a_portkey_audio_translation** — Create an audio translation in Portkey by submitting an audio file to a speech-to-text model for translation to English. Returns: text. Required: file, model.
- **list_all_portkey_files** — List files in Portkey, optionally filtered by purpose. Returns: id, bytes, created_at, filename, object, purpose, status, status_details. Max 100 per page.
- **create_a_portkey_file** — Upload a file to Portkey for use across Assistant, Fine-Tuning, and Batch endpoints. Returns: id, bytes, created_at, filename, object, purpose, status, status_details. Required: file, purpose. Bucket limit 100 GB.
- **get_single_portkey_file_by_id** — Get information about a specific file in Portkey by id. Returns: id, bytes, created_at, filename, object, purpose, status, status_details. Required: id.
- **delete_a_portkey_file_by_id** — Delete a file in Portkey by id. Returns: id, object, deleted. Required: id.
- **list_all_portkey_contents** — Get the contents of a file in Portkey. Returns the raw file content as a string. Required: file_id.
- **list_all_portkey_fine_tuning_jobs** — List your organization's fine-tuning jobs in Portkey. Returns: id, created_at, error, fine_tuned_model, finished_at, hyperparameters, model, object, organization_id, result_files, status, trained_tokens, training_file, validation_file, integrations, seed, estimated_finish.
- **create_a_portkey_fine_tuning_job** — Create a fine-tuning job in Portkey to fine-tune a provider model. Returns: id, created_at, error, fine_tuned_model, finished_at, hyperparameters, model, object, organization_id, result_files, status, trained_tokens, training_file, validation_file, integrations, seed, estimated_finish. Required: training_file.
- **get_single_portkey_fine_tuning_job_by_id** — Get a single fine-tuning job by id in Portkey. Returns: id, created_at, error, fine_tuned_model, finished_at, hyperparameters, model, object, organization_id, result_files, status, trained_tokens, training_file, validation_file, integrations, seed, estimated_finish. Required: id.
- **portkey_fine_tuning_jobs_cancel** — Immediately cancel a fine-tuning job in Portkey. Returns: id, created_at, error, fine_tuned_model, finished_at, hyperparameters, model, object, organization_id, result_files, status, trained_tokens, training_file, validation_file, integrations, seed, estimated_finish. Required: job_id.
- **portkey_fine_tuning_jobs_events** — List status update events for a fine-tuning job in Portkey. Returns: id, created_at, level, message, object. Required: job_id.
- **list_all_portkey_job_checkpoints** — List checkpoints for a fine-tuning job in Portkey. Returns: id, created_at, fine_tuned_model_checkpoint, step_number, metrics, fine_tuning_job_id, object. Required: fine_tuning_job_id.
- **list_all_portkey_models** — List available models in Portkey, optionally filtered by AI service or provider. Returns: id, created, object, owned_by, slug, canonical_slug. Max 100 per page.
- **delete_a_portkey_model_by_id** — Delete a fine-tuned model in Portkey by id. Returns an empty 204 response on success. Required: id.
- **get_single_portkey_model_by_id** — Get a single model in Portkey by id. Returns: id, created, object, owned_by, slug, canonical_slug, total, data. Required: id.
- **create_a_portkey_moderation** — Create a moderation in Portkey to identify potentially harmful content in text and images. Only works with OpenAI's Moderations endpoint currently. Returns: id, model, results. Required: input.
- **list_all_portkey_assistants** — List Portkey assistants ordered by creation date. Returns: id, object, created_at, name, description, model, instructions, tools, tool_resources, metadata, temperature, top_p, response_format.
- **create_a_portkey_assistant** — Create a new Portkey assistant with a model and instructions. Returns: id, object, created_at, name, description, model, instructions, tools, tool_resources, metadata, temperature, top_p, response_format. Required: model.
- **get_single_portkey_assistant_by_id** — Get a single Portkey assistant by id. Returns: id, object, created_at, name, description, model, instructions, tools, tool_resources, metadata, temperature, top_p, response_format. Required: id.
- **delete_a_portkey_assistant_by_id** — Delete a Portkey assistant by id. Returns: id, deleted, object. Required: id.
- **update_a_portkey_assistant_by_id** — Update an existing Portkey assistant by id. Returns: id, object, created_at, name, description, model, instructions, tools, tool_resources, metadata, temperature, top_p, response_format. Required: id.
- **create_a_portkey_response** — Create a model response in Portkey by providing a model and input prompt. Returns the response object including id, object, created_at, status, model, and output. Required: model, input. Supports server-sent event streaming when stream is set to true.
- **get_single_portkey_response_by_id** — Get a Portkey model response by id. Returns the response object including id, object, created_at, status, model, and output. Required: id. Use the include query parameter to retrieve additional output data such as file search results and image URLs.
- **delete_a_portkey_response_by_id** — Delete a Portkey model response by id. Returns an empty 200 response on success. Required: id.
- **list_all_portkey_response_input_items** — List input items for a Portkey response by response_id. Returns each input item including its id, type, and type-specific attributes. Required: response_id. Max 100 per page.
- **create_a_portkey_thread** — Create a new thread in Portkey. Returns the created thread object including id, object, created_at, metadata, and tool_resources. Accepts an optional messages array to pre-populate the thread with user messages.
- **get_single_portkey_thread_by_id** — Get a single thread in Portkey by id. Returns: id, object, created_at, tool_resources, metadata. Required: id.
- **delete_a_portkey_thread_by_id** — Delete a thread in Portkey by id. Returns: id, deleted, object. Required: id.
- **update_a_portkey_thread_by_id** — Update a thread in Portkey by id. Only the metadata field can be modified. Returns the updated thread object including id, object, created_at, metadata, and tool_resources. Required: id.
- **list_all_portkey_thread_messages** — List messages for a given Portkey thread. Returns each message with id, object, created_at, thread_id, role, content, attachments, and metadata. Required: thread_id.
- **create_a_portkey_thread_message** — Create a message in a Portkey thread. Returns the created message including id, object, created_at, thread_id, role, content, attachments, and metadata. Required: thread_id, role, content.
- **delete_a_portkey_thread_message_by_id** — Delete a message from a Portkey thread. Returns: id, deleted, object. Required: thread_id, id.
- **get_single_portkey_thread_message_by_id** — Get a single message from a Portkey thread by id. Returns the message including id, object, created_at, thread_id, role, content, attachments, and metadata. Required: thread_id, id.
- **update_a_portkey_thread_message_by_id** — Modify a message in a Portkey thread, typically updating its metadata. Returns the updated message including id, object, created_at, thread_id, role, content, attachments, and metadata. Required: thread_id, id.
- **create_a_portkey_threads_run** — Create a thread and run it in one request in Portkey. Returns the run object including id, object, status, assistant_id, thread_id, model, created_at, and expires_at. Required: assistant_id, thread.
- **list_all_portkey_thread_runs** — List runs belonging to a Portkey thread, ordered by creation date. Returns each run with id, object, created_at, assistant_id, thread_id, status, model, tools, metadata, and usage. Required: thread_id.
- **create_a_portkey_thread_run** — Create a run on a Portkey thread using an existing assistant. Returns the created run object including id, status, assistant_id, thread_id, model, and created_at. Required: thread_id, assistant_id.
- **portkey_thread_runs_cancel** — Cancel a Portkey run that is currently in_progress. Returns the run object including id, status, assistant_id, thread_id, and model. Required: thread_id, run_id.
- **get_single_portkey_thread_run_by_id** — Get a single Portkey run by id within a thread. Returns the run object including id, status, assistant_id, thread_id, model, created_at, tools, and usage. Required: thread_id, id.
- **update_a_portkey_thread_run_by_id** — Update a Portkey run's metadata by id within a thread. Returns the updated run object including id, status, assistant_id, thread_id, model, and metadata. Required: thread_id, id.
- **create_a_portkey_run_submit_tool_output** — Submit tool call outputs for a Portkey run with status 'requires_action'. All outputs must be submitted in a single request. Returns the updated run object including id, status, assistant_id, thread_id, model, and created_at. Required: thread_id, run_id, tool_outputs.
- **list_all_portkey_run_steps** — List run steps belonging to a specific run in Portkey. Returns: id, object, created_at, assistant_id, thread_id, run_id, type, status, step_details, last_error, expired_at, cancelled_at, failed_at, completed_at, metadata, usage. Required: thread_id, run_id. Max 100 per page; default 20.
- **get_single_portkey_run_step_by_id** — Get a single run step by id in Portkey. Returns: id, object, created_at, assistant_id, thread_id, run_id, type, status, step_details, last_error, expired_at, cancelled_at, failed_at, completed_at, metadata, usage. Required: thread_id, run_id, id.
- **list_all_portkey_vector_stores** — List Portkey vector stores ordered by creation date. Returns each store with id, object, created_at, name, bytes, and file_counts. Max 100 per page.
- **create_a_portkey_vector_store** — Create a new Portkey vector store. Returns the created vector store object including id, object, created_at, name, bytes, and file_counts.
- **get_single_portkey_vector_store_by_id** — Get a single Portkey vector store by id. Returns the full vector store object including id, object, created_at, name, bytes, and file_counts. Required: id.
- **delete_a_portkey_vector_store_by_id** — Delete a Portkey vector store by id. Returns: id, deleted, object. Required: id.
- **update_a_portkey_vector_store_by_id** — Update a Portkey vector store by id. Returns the updated vector store object including id, object, created_at, name, bytes, and file_counts. Required: id.
- **list_all_portkey_vector_store_files** — List vector store files in Portkey. Returns each file's id, object, created_at, usage_bytes, vector_store_id, status, and last_error. Required: vector_store_id. Max 100 per page.
- **create_a_portkey_vector_store_file** — Create a vector store file in Portkey by attaching an existing File to a vector store. Returns: id, object, usage_bytes, created_at, vector_store_id, status, last_error, chunking_strategy. Required: vector_store_id, file_id.
- **delete_a_portkey_vector_store_file_by_id** — Delete a vector store file in Portkey, removing it from the vector store without deleting the underlying File. Returns: id, deleted, object. Required: vector_store_id, id.
- **get_single_portkey_vector_store_file_by_id** — Get a single vector store file in Portkey by id. Returns: id, object, usage_bytes, created_at, vector_store_id, status, last_error, chunking_strategy, export_settings. Required: vector_store_id, id.
- **create_a_portkey_vector_store_file_batch** — Create a vector store file batch in Portkey by providing a list of file IDs to add to the vector store. Returns: id, object, created_at, vector_store_id, status, file_counts. Required: vector_store_id, file_ids.
- **portkey_vector_store_file_batches_cancel** — Cancel a vector store file batch in Portkey, attempting to stop processing of files in the batch as soon as possible. Returns: id, object, created_at, vector_store_id, status, file_counts. Required: vector_store_id, batch_id.
- **get_single_portkey_vector_store_file_batch_by_id** — Retrieve a specific vector store file batch in Portkey by its batch ID. Returns: id, object, created_at, vector_store_id, status, file_counts, export_settings. Required: vector_store_id, id.
- **list_all_portkey_file_batche_files** — List vector store files within a file batch in Portkey. Returns each file's id, object, created_at, and vector_store_id. Required: vector_store_id, batch_id. Filter by file status (in_progress, completed, failed, cancelled) and sort order by created_at are supported.
- **list_all_portkey_batches** — List your organization's batches in Portkey. Returns: id, object, endpoint, errors, input_file_id, completion_window, status, output_file_id, error_file_id, created_at, in_progress_at, expires_at, finalizing_at, completed_at, failed_at, expired_at, cancelling_at, cancelled_at, request_counts, metadata. Max 100 per page.
- **create_a_portkey_batch** — Create and execute a batch in Portkey from an uploaded file of requests. Returns the created batch including id, status, input_file_id, endpoint, completion_window, and created_at. Required: input_file_id, endpoint, completion_window.
- **get_single_portkey_batch_by_id** — Get a single batch in Portkey by id. Returns: id, object, endpoint, errors, input_file_id, completion_window, status, output_file_id, error_file_id, created_at, in_progress_at, expires_at, finalizing_at, completed_at, failed_at, expired_at, cancelling_at, cancelled_at, request_counts, metadata. Required: id.
- **portkey_batches_cancel** — Cancel an in-progress batch in Portkey. The batch enters cancelling status for up to 10 minutes before becoming cancelled, with partial results available in the output file. Returns the batch including id, status, input_file_id, endpoint, completion_window, created_at. Required: batche_id.
- **list_all_portkey_batche_outputs** — Retrieve the output of a completed Portkey batch as a binary stream (application/octet-stream). Required: batch_id.
- **list_all_portkey_configs** — List all Portkey configs. Returns: id, name, slug, organisation_id, workspace_id, status, owner_id, updated_by, created_at, last_updated_at.
- **create_a_portkey_config** — Create a new Portkey config. Returns: id, version_id. Required: name, config.
- **get_single_portkey_config_by_id** — Get a single Portkey config by id. Returns the config object including retry, cache, strategy, and targets settings. Required: id.
- **update_a_portkey_config_by_id** — Update a Portkey config by id. Returns: version_id. Required: id.
- **delete_a_portkey_config_by_id** — Delete a Portkey config by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_config_versions** — List all versions of a Portkey config by its slug. Returns: id, name, workspace_id, slug, organisation_id, status, owner_id, updated_by, created_at, last_updated_at, config, format, type, version_id, object. Required: slug.
- **create_a_portkey_feedback** — Create new feedback for a Portkey interaction or trace. Returns a feedback response confirming successful submission. Required: trace_id, value. Value must be an integer between -10 and 10; weight defaults to 1.0.
- **update_a_portkey_feedback_by_id** — Update existing feedback in Portkey by id. Returns a feedback response confirming successful update. Required: id, value.
- **list_all_portkey_integrations** — List all integrations in Portkey, optionally filtered by workspace or integration scope. Returns: id, organisation_id, ai_provider_id, name, status, created_at, last_updated_at, slug, description, object, note.
- **create_a_portkey_integration** — Create a new Portkey integration by providing the AI provider and credentials. Returns: id. Required: name, ai_provider_id, key.
- **get_single_portkey_integration_by_id** — Get a single Portkey integration by id. Returns: id, slug, name, ai_provider_id, note. Required: id.
- **update_a_portkey_integration_by_id** — Update a Portkey integration's name or note by id. Returns: id. Required: id.
- **delete_a_portkey_integration_by_id** — Delete a Portkey integration by id. Returns: id. Required: id.
- **list_all_portkey_integration_models** — List all models available for a specific Portkey integration, including configuration and pricing details. Returns: id, slug, canonical_slug, object. Required: slug.
- **portkey_integration_models_bulk_update** — Bulk update model access, pricing configuration, and settings for multiple models in a Portkey integration. Can enable/disable models and configure custom pricing. Returns: object, total, data. Required: slug, models.
- **portkey_integration_models_bulk_delete** — Bulk delete multiple custom models from a Portkey integration by their model slugs. Returns a success confirmation object on successful deletion. Required: slug, slugs.
- **list_all_portkey_integration_workspaces** — List workspace access configurations for a Portkey integration by slug. Returns: workspace_id, usage_limits, rate_limits for each workspace with access to the integration. Required: slug.
- **portkey_integration_workspaces_bulk_update** — Bulk update workspace access for a Portkey integration. Updates workspace access permissions, usage limits, and rate limits for an integration, supporting both global workspace access and per-workspace settings. Returns the updated workspace access configuration object. Required: slug.
- **list_all_portkey_providers** — List all providers in Portkey. Returns: name, integration_id, note, status, usage_limits, reset_usage, created_at, slug, rate_limits, expires_at, object, id, workspace_id. Max 100 per page.
- **create_a_portkey_provider** — Create a new provider in Portkey. Returns: id, slug, name, integration_id, workspace_id, note, usage_limits, rate_limits, expires_at. Required: name, integration_id.
- **get_single_portkey_provider_by_id** — Get a single provider by id in Portkey. Returns: id, slug, name, integration_id, workspace_id, note, usage_limits, rate_limits, expires_at. Required: id.
- **update_a_portkey_provider_by_id** — Update a Portkey provider by id, modifying fields such as name, note, usage limits, rate limits, expiry, and reset usage. Returns: id, slug. Required: id.
- **delete_a_portkey_provider_by_id** — Delete a Portkey provider by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_virtual_keys** — List all Portkey virtual keys. Returns: name, note, status, usage_limits, reset_usage, created_at, slug, model_config, rate_limits, expires_at, secret_mappings, object, id, provider, key, workspace_id, apiVersion, resourceName, deploymentName, deploymentConfig, last_updated_at.
- **create_a_portkey_virtual_key** — Create a Portkey virtual key for a given AI provider. Returns: slug.
- **get_single_portkey_virtual_key_by_id** — Get a single Portkey virtual key by id. Returns: id, slug, name, provider, key, note, workspace_id, apiVersion, resourceName, deploymentName, deploymentConfig, usage_limits, rate_limits, expires_at, secret_mappings, created_at, last_updated_at. Required: id.
- **update_a_portkey_virtual_key_by_id** — Update a Portkey virtual key by id. Returns: id, slug, name, provider, key, note, workspace_id, apiVersion, resourceName, deploymentName, deploymentConfig, usage_limits, rate_limits, expires_at, secret_mappings, created_at, last_updated_at. Required: id.
- **delete_a_portkey_virtual_key_by_id** — Delete a Portkey virtual key by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_users_invites** — List all user invites in Portkey. Returns: object, id, email, role, created_at, expires_at, accepted_at, status, invited_by, workspaces. Filter by role, email, or status.
- **create_a_portkey_users_invite** — Send a user invite to join your Portkey organization. Returns the created invite object including its id, email, role, status, created_at, expires_at, invited_by, and workspaces. Required: email.
- **get_single_portkey_users_invite_by_id** — Get a single Portkey user invite by id. Returns: object, id, email, role, created_at, expires_at, accepted_at, status, invited_by, workspaces. Required: id.
- **delete_a_portkey_users_invite_by_id** — Delete a Portkey user invite by id. Returns an empty response on success. Required: id.
- **create_a_portkey_invite_resend** — Resend an invite to a user in your Portkey organization. Returns: inviteLink. Required: invite_id.
- **list_all_portkey_admin_users** — List Portkey admin users with optional role and email filters. Returns: object, id, first_name, last_name, role, email, created_at, last_updated_at, workspace_ids.
- **get_single_portkey_admin_user_by_id** — Get a single Portkey admin user by id. Returns: object, id, first_name, last_name, role, email, created_at, last_updated_at, workspace_ids, expires_at, accepted_at, status, invited_by, workspaces. Required: id.
- **update_a_portkey_admin_user_by_id** — Update a Portkey admin user's role by id. Returns the updated user object including object, id, first_name, last_name, role, email, created_at, last_updated_at, and workspace_ids. Required: id.
- **delete_a_portkey_admin_user_by_id** — Remove a Portkey admin user by id. Returns an empty response on success. Required: id.
- **list_all_portkey_workspace_users** — List members of a Portkey workspace, optionally filtered by role or email. Returns: object, id, first_name, last_name, org_role, role, created_at, last_updated_at, status, workspace_id, email, scopes, settings, expires_at, accepted_at, invited_by, workspaces. Required: workspace_id.
- **create_a_portkey_workspace_user** — Add one or more existing Portkey users as members of a workspace, each with a specified role. Returns an empty response body on success. Required: workspace_id, users.
- **update_a_portkey_workspace_user_by_id** — Update a Portkey workspace member's role by id. Returns an empty response body on success. Required: workspace_id, id, role.
- **delete_a_portkey_workspace_user_by_id** — Remove a member from a Portkey workspace by id. Returns an empty 204 response on success. Required: workspace_id, id.
- **get_single_portkey_workspace_user_by_id** — Get a single Portkey workspace member by id. Returns: object, id, first_name, last_name, org_role, role, created_at, last_updated_at, status, workspace_id, email, scopes, settings. Required: workspace_id, id.
- **list_all_portkey_admin_workspaces** — List Portkey workspaces with optional filtering by name, exact name, or status. Returns: id, slug, name, description, created_at, last_updated_at, defaults, usage_limits, rate_limits, object.
- **create_a_portkey_admin_workspace** — Create a new workspace in Portkey with optional defaults, users, usage limits, and rate limits. Returns: id, name, description, created_at, last_updated_at, object.
- **get_single_portkey_admin_workspace_by_id** — Get a single Portkey workspace by id, including its member users. Returns: id, name, description, created_at, last_updated_at, object, users, email, role, expires_at, accepted_at, status, invited_by, workspaces. Required: id.
- **update_a_portkey_admin_workspace_by_id** — Update a Portkey workspace by id, including name, description, defaults, usage limits, and rate limits. Returns: id, name, description, created_at, last_updated_at, object, email, role, expires_at, accepted_at, status, invited_by, workspaces. Required: id.
- **delete_a_portkey_admin_workspace_by_id** — Delete a Portkey workspace by id. Returns an empty 200 response on success. Required: id.
- **list_all_portkey_scim_workspaces** — List all SCIM group to workspace mappings in Portkey, optionally filtered by workspace, SCIM group, or role. Returns: id, workspace_id, scim_group, scim_group_id, role, name, created_at, last_updated_at, object.
- **create_a_portkey_scim_workspace** — Create a SCIM group to workspace mapping in Portkey. Either reference an existing SCIM group by ID or provide a group name to pre-create it before the IdP provisions it. Returns: id, workspace_id, scim_group, role, scim_group_id. Required: workspace_id, role. Either scim_group_id or scim_group_name must be provided.
- **delete_a_portkey_scim_workspace_by_id** — Delete a SCIM group to workspace mapping in Portkey by id. Archives the mapping without deleting the SCIM group or workspace. Returns: success. Required: id.
- **list_all_portkey_mcp_integrations** — List MCP Integrations in Portkey, optionally filtered by type, workspace_id, or a search term. Returns each integration with id, slug, name, url, auth_type, and transport.
- **create_a_portkey_mcp_integration** — Create a new MCP Integration in Portkey. Returns the created integration with id, name, url, auth_type, and transport. Required: name, url, auth_type, transport. Either organisation_id or workspace_id must also be provided.
- **get_single_portkey_mcp_integration_by_id** — Get a single Portkey MCP Integration by id. Returns: id, slug, name, url, auth_type, transport. Required: id.
- **update_a_portkey_mcp_integration_by_id** — Update a Portkey MCP Integration by id. Returns the updated integration with id, name, url, auth_type, and transport. Required: id.
- **delete_a_portkey_mcp_integration_by_id** — Delete a Portkey MCP Integration by id. Returns the deleted integration object with id, name, url, auth_type, and transport. Required: id.
- **list_all_portkey_mcp_integration_workspaces** — List workspaces associated with a Portkey MCP integration. Returns: id, name, description, created_at, last_updated_at, object. Required: mcp_integration_id. The optional version parameter switches the response shape from a legacy workspaces array to a data/total paginated shape.
- **portkey_mcp_integration_workspaces_bulk_update** — Bulk update workspace access for a Portkey MCP integration. Returns a JSON object with the update result. Required: mcp_integration_id.
- **list_all_portkey_mcp_integration_capabilities** — List MCP integration capabilities in Portkey, optionally filtered by capability type. Returns: name, type, title, description, icons, enabled, created_at, last_updated_at, input_schema, output_schema, execution, annotations, arguments, uri, uri_template, mime_type, size. Required: mcp_integration_id.
- **portkey_mcp_integration_capabilities_bulk_update** — Bulk update MCP integration capabilities in Portkey by submitting update payloads for multiple capabilities at once. Returns the bulk update result object. Required: mcp_integration_id.
- **list_all_portkey_mcp_integration_metadata** — Get the metadata key-value pairs attached to a Portkey MCP integration. Returns: _user, environment, feature, request_id. Required: mcp_integration_id.
- **list_all_portkey_mcp_servers** — List MCP Servers for a workspace in Portkey. Returns: id, organisation_id, name, description, status, created_at, owner_id, slug, workspace_id, mcp_integration_id, mcp_integration_slug, mcp_integration_url, auth_type, workspace_name, workspace_slug, url. Max 100 per page.
- **create_a_portkey_mcp_server** — Create a new MCP Server in Portkey as a workspace instance of an MCP Integration. Returns: id, slug, name, mcp_integration_id. Required: name, mcp_integration_id.
- **get_single_portkey_mcp_server_by_id** — Get a single MCP Server by id in Portkey. Returns: id, name, mcp_integration_id. Required: id.
- **update_a_portkey_mcp_server_by_id** — Update an MCP Server by id in Portkey. Returns: id. Required: id.
- **delete_a_portkey_mcp_server_by_id** — Delete an MCP Server by id in Portkey. Returns: id.
- **create_a_portkey_mcp_server_test** — Test connectivity to an MCP server in Portkey by verifying its integration URL. Returns an opaque response whose fields are determined upstream by the Portkey API. Required: mcp_server_id.
- **list_all_portkey_mcp_server_capabilities** — List capabilities for a Portkey MCP Server, optionally filtered by capability type. Returns: name, type, title, description, icons, enabled, integration_enabled, input_schema, output_schema, execution, annotations, arguments, uri, uri_template, mime_type, size. Required: mcp_server_id.
- **portkey_mcp_server_capabilities_bulk_update** — Bulk update capabilities for a Portkey MCP server, enabling or disabling tools, prompts, resources, and resource templates. Returns the bulk update response. Required: mcp_server_id.
- **list_all_portkey_mcp_server_user_acceses** — List user access records for a specific MCP server in Portkey. Returns: user_id, first_name, last_name, enabled, has_override, connection_status, object, id, role, email, created_at, last_updated_at, expires_at, accepted_at, status, invited_by, workspaces. Required: mcp_server_id.
- **portkey_mcp_server_user_acceses_bulk_update** — Bulk update user access records for a specific MCP server in Portkey. Returns: success. Required: mcp_server_id.
- **list_all_portkey_mcp_server_connections** — List MCP Server Connections for a specific MCP server in Portkey. Returns: user_id, connected, created_at, last_updated_at, id, workspace_id, mcp_server_id, updated_at. Required: mcp_server_id. Optionally filter by user_id or workspace_id.
- **portkey_mcp_server_connections_bulk_delete** — Delete an MCP server connection in Portkey, disconnecting a user from the specified MCP server. Returns: success. Required: mcp_server_id. user_id is required when using a service API key; optional with a user API key.
- **create_a_portkey_log** — Create one or more custom log entries in Portkey by submitting request and response payloads with optional metadata. Returns: id, created_at. Accepts a single log object or an array of log objects.
- **get_single_portkey_log_by_id** — Get a specific Portkey log by id. Returns: _id, request, response, organisation_id, created_at, metrics, id. Required: id. When path_format is v2, created_at is also required.
- **get_single_portkey_logs_export_by_id** — Get a specific Portkey logs export by id. Returns: id, organisation_id, filters, requested_data, status, description, created_at, last_updated_at, created_by, workspace_id, object. Required: id.
- **update_a_portkey_logs_export_by_id** — Update a Portkey logs export by id. Returns: id, total, object, workspace_id, filters, requested_data. Required: id, filters.
- **list_all_portkey_logs_exports** — List all Portkey logs exports, optionally filtered by workspace. Returns each export with id, organisation_id, filters, requested_data, status, description, created_at, last_updated_at, created_by, workspace_id, object, error. Max 100 per page.
- **create_a_portkey_logs_export** — Create a Portkey log export job by specifying filters and requested data fields. Returns: id, total, object, workspace_id, filters, requested_data. Required: filters, requested_data. Up to 50,000 logs per export job.
- **portkey_logs_exports_start** — Start processing a Portkey logs export job by export_id. Returns: message, object. Required: export_id.
- **portkey_logs_exports_cancel** — Cancel log export. Returns: message, object. Required: export_id.
- **list_all_portkey_export_downloads** — Download a completed Portkey log export by retrieving its signed download URL for the JSONL export file. Returns: signed_url. Required: export_id. The export job must be completed before calling this endpoint; up to 50,000 logs per export job.
- **list_all_portkey_audit_logs** — List Portkey audit logs filtered by time range and organisation. Returns: id, request_id, method, uri, user_id, user_type, workspace_id, organisation_id, response_status_code, resource_type, action, client_ip, country, created_at. Required: start_time, end_time, organisation_id. Max 100 per page.
- **create_a_portkey_api_key** — Create a Portkey API key for a given type and sub-type, with scopes and optional rotation or usage-limit policies. Returns: id, key, object. Required: type, sub_type, name, scopes.
- **list_all_portkey_api_keys** — List all Portkey API keys, optionally filtered by workspace. Returns each key's id, key, and object.
- **get_single_portkey_api_key_by_id** — Get a single Portkey API key by id. Returns: id, key, object. Required: id.
- **update_a_portkey_api_key_by_id** — Update a Portkey API key's metadata, scopes, rate limits, rotation policy, or usage limits by id. The key type and user_id cannot be changed after creation. Returns: id, object. Required: id.
- **delete_a_portkey_api_key_by_id** — Delete a Portkey API key by id. Returns an empty response on success. Required: id.
- **create_a_portkey_api_key_rotate** — Rotate an existing Portkey API key, generating a new key value while the previous key remains valid during a transition period. Returns: id, key, key_transition_expires_at, object. Required: api_key_id.
- **list_all_portkey_policies_usage_limits** — List Portkey usage limits policies with optional status and type filtering. Returns: id, name, conditions, group_by, type, credit_limit, alert_threshold, periodic_reset, periodic_reset_days, next_usage_reset_at, last_reset_at, status, workspace_id, organisation_id, created_at, last_updated_at, value_key_usage_map.
- **create_a_portkey_policies_usage_limit** — Create a Portkey usage limits policy to control total cost or token usage over a period. Returns: id, name, type, credit_limit, alert_threshold, periodic_reset, conditions, group_by, created_at. Required: conditions, group_by, type, credit_limit.
- **get_single_portkey_policies_usage_limit_by_id** — Get a single Portkey usage limits policy by id. Returns: id, name, type, credit_limit, alert_threshold, periodic_reset, conditions, group_by, created_at. Required: id.
- **update_a_portkey_policies_usage_limit_by_id** — Update an existing Portkey usage limits policy by id. Returns: id, name, type, credit_limit, alert_threshold, periodic_reset, conditions, group_by, created_at. Required: id.
- **delete_a_portkey_policies_usage_limit_by_id** — Archive (soft delete) a Portkey usage limits policy by id. Returns an empty 204 response on success. Required: id.
- **list_all_portkey_usage_limit_entities** — List entities tracked by a Portkey usage limits policy with their current usage. Returns: id, value_key, current_usage, status. Required: policy_usage_limits_id.
- **portkey_usage_limit_entities_bulk_update** — Reset the current usage for a specific entity in a Portkey usage limits policy. Returns an empty object on success. Required: policy_usage_limits_id, entity_id.
- **list_all_portkey_policies_rate_limits** — List all rate limits policies in Portkey with optional filtering by status, type, unit, and target. Returns: id, name, conditions, group_by, type, unit, value, status, workspace_id, organisation_id, created_at, last_updated_at, target, updated_at.
- **create_a_portkey_policies_rate_limit** — Create a new rate limits policy in Portkey to control the rate of requests or tokens consumed per minute, hour, or day. Returns: id, name, conditions, group_by, type, unit, value, created_at, updated_at. Required: name, type, unit, value.
- **get_single_portkey_policies_rate_limit_by_id** — Get a single rate limits policy by id in Portkey. Returns: id, name, conditions, group_by, type, unit, value, created_at, updated_at. Required: id.
- **update_a_portkey_policies_rate_limit_by_id** — Update an existing rate limits policy in Portkey by id, such as changing the rate limit value or unit. Returns: id, name, conditions, group_by, type, unit, value, created_at, updated_at. Required: id.
- **delete_a_portkey_policies_rate_limit_by_id** — Delete a rate limits policy in Portkey by id. Returns an empty response on success. Required: id.
- **list_all_portkey_graphs_requests** — Get the requests analytics graph from Portkey, showing request volume across time buckets. Returns: summary, data_points, object, request_timeout, retry, provider. Supports optional filters by time range, cost, tokens, status code, virtual keys, configs, API keys, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_graphs_costs** — Get a Portkey cost analytics graph showing cost trends over time. Returns: summary, data_points, object. All parameters are optional filters for narrowing the cost graph by time range, cost, token counts, status codes, virtual keys, configs, API keys, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_graphs_latencies** — Get the latency analytics graph in Portkey, returning average and percentile (p50, p90, p99) latency metrics as time-series data points. Returns: summary, data_points, object. All query parameters are optional filters.
- **list_all_portkey_graphs_tokens** — Get the tokens analytics graph in Portkey, showing token usage over time. Returns: summary, data_points, object, budget_tokens. All query parameters are optional filters including time range, cost, token counts, status code, virtual keys, configs, API keys, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_graphs_users** — Get users graph. Returns unique user count across different time buckets. Returns: summary, data_points, object. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_users_requests** — Get the Portkey users requests analytics graph showing average requests per user across different time buckets. Returns: summary, data_points, object, total, data.
- **list_all_portkey_graphs_errors** — Get the Portkey errors graph showing error counts across time buckets. Returns: summary, data_points, object.total, data_points (each with timestamp and total per bucket), and object type. Supports optional filtering by time range, cost, tokens, status code, virtual keys, configs, API keys, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_errors_rates** — Get the percentage error rate time series graph in Portkey. Returns: summary, data_points, object. Supports optional filters including workspace, time range, cost, tokens, status code, virtual keys, configs, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_errors_stacks** — Get a status code wise stacked error graph in Portkey. Returns: summary, data_points, object. All filter parameters are optional.
- **list_all_portkey_errors_status_codes** — Get a status-code-grouped error graph in Portkey analytics. Returns: summary, data_points, object. All query parameters are optional filters.
- **list_all_portkey_requests_rescueds** — Get the Portkey rescued requests graph showing requests saved by retry and fallback strategies over time. Returns: summary, data_points, object, request_timeout, retry, provider. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_cache_hit_rates** — Get cache hit rate graph data in Portkey. Returns: summary, data_points, object, provider, cache, retry. Supports optional filtering by time range, cost, tokens, status code, virtual keys, configs, API key IDs, metadata, AI model, trace/span IDs, and prompt slug.
- **list_all_portkey_cache_latencies** — Get the cache hit latency graph from Portkey analytics. Returns: summary, data_points, object, provider, cache, retry. Supports filtering by time range, cost, tokens, status code, virtual keys, configs, metadata, trace ID, and more.
- **list_all_portkey_graphs_feedbacks** — Get the Portkey feedbacks analytics graph with time-bucketed feedback counts. Returns: summary, data_points, object. Supports optional filtering by workspace, time range, cost, token counts, status code, weighted feedback, virtual keys, configs, API keys, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_feedbacks_scores** — Get a score-wise feedbacks distribution graph in Portkey showing how feedback counts are distributed across each feedback score value. Returns: summary, data_points, object.
- **list_all_portkey_feedbacks_weighteds** — List weighted feedback graph data from Portkey, where weighted feedback is calculated as value multiplied by score. Returns: summary, data_points, object. Supports optional filters including time of generation range, total units, cost, prompt/completion tokens, status code, weighted feedback range, virtual keys, configs, API key IDs, metadata, AI model, trace ID, span ID, and prompt slug.
- **list_all_portkey_feedbacks_ai_models** — Get a Portkey analytics graph of feedbacks grouped by AI model. Returns: summary, data_points, object, total, data. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_summary_caches** — Get cache summary analytics data for a selected time period in Portkey. Returns a summary object including hits, avg_latency, total_requests, and cache_speedup, along with an object type identifier. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_groups_users** — List Portkey analytics data grouped by end user, showing request counts and costs per user. Returns: user, requests, cost, object, total, data. Each data item contains the user identifier, total requests, and cost in cents. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_groups_ai_models** — Get AI model grouped analytics data from Portkey, showing request counts aggregated per AI model. Returns: ai_model, requests, object, total, data. Required: workspace_slug, time_of_generation_min, time_of_generation_max.
- **list_all_portkey_groups_providers** — List Portkey analytics data grouped by provider (virtual key). Returns: provider, requests, object. Use the columns parameter to choose which metrics to include.
- **get_single_portkey_groups_metadatum_by_id** — Get Portkey analytics data grouped by a specific metadata key, returning a list of analytics-group objects. Returns: metadata_value, requests, cost, avg_tokens, avg_weighted_feedback, requests_with_feedback, last_seen, object. Required: id (the metadata key).
- **list_all_portkey_model_configs_pricings** — Get model pricing configuration in Portkey for a specific provider and model. Returns pay_as_you_go token prices, calculate formulas, and currency. Required: provider, model. Prices are in USD cents per token.
- **list_all_portkey_secret_references** — List all Portkey secret references, optionally filtered by manager type, tags, or name. Returns: id, name, slug, manager_type, status, created_at, last_updated_at, object, secret_path. Max 100 per page.
- **create_a_portkey_secret_reference** — Create a new Portkey secret reference linking to an external secret manager. Returns: id, slug, object. Required: name, manager_type, auth_config, secret_path. allow_all_workspaces and allowed_workspaces are mutually exclusive.
- **get_single_portkey_secret_reference_by_id** — Get a single Portkey secret reference by UUID or slug. Returns: id, slug, object, name, manager_type, secret_path. Required: id.
- **update_a_portkey_secret_reference_by_id** — Update a Portkey secret reference by UUID or slug. Returns: id, object, name. Required: id.
- **delete_a_portkey_secret_reference_by_id** — Delete a Portkey secret reference by UUID or slug. Returns an empty 204 response on success. Required: id. Cannot delete a reference that is in use by integrations or virtual keys.
- **list_all_portkey_deployments** — List Portkey gateway deployments with optional filters for status, type, workspace, and name search. Returns: id, name, slug, type, status, is_default, connection_status, created_by, created_at, last_updated_at, last_synced_at, last_resynced_at, object, auth_settings, client_auth, workspace_slug, organisation_id, updated_at. Max 100 per page.
- **create_a_portkey_deployment** — Register a self-hosted Portkey gateway deployment with the control plane. Issues a client_auth token returned in full only in this response. Returns: id, type, created_at, updated_at. Required: name.
- **get_single_portkey_deployment_by_id** — Get a Portkey gateway deployment by id (UUID or 'self' when authenticated with the Gateway's own client_auth token). Returns: id, name, type, status, auth_settings, client_auth, is_default, workspace_slug, organisation_id, created_at, updated_at. Required: id.
- **update_a_portkey_deployment_by_id** — Update a Portkey gateway deployment by id, including name and auth_settings. Rotating client_auth via this endpoint returns the new token in full. Returns: id, name, type, created_at, updated_at. Required: id.
- **delete_a_portkey_deployment_by_id** — Archive (soft-delete) a Portkey gateway deployment by id. The record is soft-deleted, not permanently removed. Returns: id, name, type, created_at, updated_at. Required: id.
- **list_all_portkey_deployment_pings** — Ping a Portkey Gateway deployment to run a two-way connectivity check — an outbound health call to the Gateway and an inbound verify-ping callback. Returns: status, gateway_base_url, outbound, inbound, object, version. Required: deployment_id. The inbound check waits up to 10 seconds for the Gateway to call back; returns 400 if no gateway_base_url is configured for the deployment.

## How it works

1. **Link your customer's Portkey account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Portkey.** The Proxy API is a 1-to-1 mapping of the Portkey API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Shift LLM costs to your customers with BYO gateway** — Let customers route your product's AI features through their own Portkey account and virtual keys, so LLM spend lands on their bill while they keep full control over model choice, fallbacks, and caching.
- **Externalize prompt management to your customers' AI teams** — Instead of hardcoding prompts, pull versioned prompts and templates from each customer's Portkey workspace so their internal team can iterate on tone, persona, and instructions without waiting for your next release.
- **Federate AI observability into customer dashboards** — Push logs, feedback, and traces from your AI features into the customer's Portkey account so they get a single pane of glass for cost, latency, and quality across every AI tool in their stack.
- **Enforce customer-defined guardrails and spend limits** — Read the customer's guardrails and provision per-tenant usage and rate limit policies programmatically, so regulated buyers can safely enable AI features in your product without fearing runaway bills or policy violations.
- **Close the feedback loop for customer-owned fine-tuning** — Send end-user thumbs-up/down and edit signals back into Portkey against the originating trace, giving your customers the labeled data they need to fine-tune their own models on your product's interactions.

## What you can build

- **Connect-your-Portkey onboarding flow** — A native setup screen where end users link their Portkey workspace and pick the virtual key your product should use for their tenant's AI calls.
- **Prompt picker backed by customer's prompt library** — List the customer's Portkey prompts and versions in your UI and let admins choose which saved prompt powers each AI feature, then execute it with variables via prompt render or prompt completion.
- **Unified chat completion routing** — Send all your product's chat and completion requests through Portkey's OpenAI-compatible endpoints so customers control provider, model, retries, and semantic caching from their own configs.
- **Per-tenant virtual keys with budget caps** — Automatically provision a Portkey virtual key for each new workspace in your app and attach a usage limit policy so customers can cap monthly AI spend per tenant, agent, or feature.
- **In-app AI cost and latency dashboard** — Surface time-series cost, token, and latency graphs pulled from Portkey inside your product so customers can see exactly what your AI features are costing them without leaving your UI.
- **Guardrail-checked AI outputs** — Let customers select from their configured Portkey guardrails and enforce them on generations before rendering, so PII, toxicity, or brand-safety rules defined once in Portkey apply across your product.

## FAQs

### How do end users authenticate their Portkey account?

Portkey uses API key authentication. Through Truto, your users paste their Portkey API key during the connect flow, and Truto stores and injects it on every request so you never handle the credential directly.

### Can we run LLM inference through Portkey, or only manage metadata?

Both. The integration exposes inference endpoints like chat completions, completions, embeddings, images, audio, moderation, and rerank, alongside management endpoints for prompts, configs, virtual keys, guardrails, and analytics.

### How do we let customers pick a prompt without hardcoding IDs?

Use the prompts and prompt versions list endpoints to render a picker in your UI, then execute the selected prompt at runtime with create_a_portkey_prompt_render or create_a_portkey_prompt_completion, passing variables from your product's context.

### Can we push our own AI usage into a customer's Portkey workspace?

Yes. Use create_a_portkey_log to send request, response, cost, and latency data from AI calls you execute outside Portkey, and create_a_portkey_feedback to attach user satisfaction scores to a trace ID.

### How do we cap per-tenant spend or throughput?

Provision a virtual key per tenant with create_a_portkey_virtual_key and attach policies via create_a_portkey_policies_usage_limit for cost ceilings and create_a_portkey_policies_rate_limit for RPM controls.

### What analytics can we pull into our own dashboards?

Portkey exposes time-series graphs for requests, costs, latencies, tokens, users, errors, cache hit rates, and feedback, which you can query and render inside your product for the connected customer.

### Does the integration support enterprise workspace and user management?

Yes. You can list and manage admin users, workspace users, workspace invites, admin workspaces, and SCIM workspaces, which is useful for multi-tenant provisioning and enterprise onboarding flows.

## Related reading

- [Connect Portkey to ChatGPT: Manage Prompts, Logs & AI Gateway](https://truto.one/blog/connect-portkey-to-chatgpt-manage-prompts-logs-ai-gateway/) — Learn how to connect Portkey to ChatGPT using Truto's managed MCP server. Automate AI gateways, execute prompt templates, and analyze LLM logs.
- [Connect Portkey to Claude: Control Guardrails, Vector Stores & RAG](https://truto.one/blog/connect-portkey-to-claude-control-guardrails-vector-stores-rag/) — Learn how to connect Portkey to claude using Truto. Step-by-step guide to tool calling, API quirks, and autonomous workflows.
- [Connect Portkey to AI Agents: Automate Fine-Tuning, OCR & Threads](https://truto.one/blog/connect-portkey-to-ai-agents-automate-fine-tuning-ocr-threads/) — Learn how to connect Portkey to AI Agents using Truto's /tools endpoint. Bind LLMs to Portkey to automate fine-tuning, OCR pipelines, and thread management.
