---
title: OpenAI API Integration on Truto
slug: openai
category: Conversational Intelligence
canonical: "https://truto.one/integrations/detail/openai/"
---

# OpenAI API Integration on Truto



**Category:** Conversational Intelligence  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.

## MCP-ready AI tools

Truto exposes 157 tools for OpenAI that AI agents can call directly.

- **list_all_openai_users** — List users in OpenAI organization. Returns id, name, email, role, and added_at for each user.
- **get_single_openai_user_by_id** — Get a specific user in OpenAI by id. Returns id, name, email, role, and added_at in the response.
- **delete_a_openai_user_by_id** — Delete a user in OpenAI. Requires id. Returns object indicating deletion confirmation with object type, id, and deleted status.
- **update_a_openai_user_by_id** — Update a user's role in OpenAI. Requires id. Returns id, name, email, role, and added_at for the updated user.
- **list_all_openai_projects** — List projects in OpenAI. Returns project id, name, created_at, archived_at, and status fields in the response.
- **get_single_openai_project_by_id** — Get a specific project in OpenAI by id. Returns id, name, created_at, archived_at, status, and object fields.
- **create_a_openai_project** — Create a new project in OpenAI. Requires name. Returns id, object, name, created_at, archived_at, and status of the created project.
- **update_a_openai_project_by_id** — Update project in OpenAI by id with a new name. Requires id. Returns the updated Project object with key details such as id, name, created date, and status.
- **openai_projects_archive** — Archive a project in OpenAI by id. Returns the project object with fields id, object, name, created_at, archived_at, and status. Archived projects cannot be used or updated.
- **list_all_openai_project_users** — List project users in OpenAI for a given project_id. Returns user fields including id for identification, name, email, role, and added_at timestamp in the response.
- **get_single_openai_project_user_by_id** — Get a specific project user in OpenAI. Requires project_id and id. Returns id, name, email, role, and added_at fields of the project user.
- **create_a_openai_project_user** — Create a project user in OpenAI using project_id. Requires user_id and role in the request body. Returns object, id, email, role, and added_at fields in the response.
- **update_a_openai_project_user_by_id** — Update a specific project user's role in OpenAI. Requires project_id and id. Returns object, id, name, email, role, and added_at fields in the response.
- **delete_a_openai_project_user_by_id** — Delete a user from a project in OpenAI. Requires project_id and id. Returns object type, id of the user, and confirmation that the user was deleted.
- **list_all_openai_me** — Use this endpoint to retrieve details about the currently authenticated user.
- **list_all_openai_project_service_accounts** — List project service accounts in OpenAI. Requires project_id. Returns id, name, role, and created_at for each service account.
- **get_single_openai_project_service_account_by_id** — Get a service account in OpenAI. Requires project_id and id. Returns id, name, role, and created_at for the service account.
- **create_a_openai_project_service_account** — Create a new project service account in OpenAI. Requires project_id and name. Returns id, name, role, created_at, and an unredacted api_key object containing value, name, created_at, and id.
- **delete_a_openai_project_service_account_by_id** — Delete a service account in OpenAI from a specific project. Requires project_id and id. Returns object type, id, and deleted confirmation status.
- **list_all_openai_project_api_keys** — List project API keys in OpenAI. Requires project_id. Returns id, name, redacted_value, created_at, last_used_at, and owner details including user id, name, email, and role.
- **get_single_openai_project_api_key_by_id** — Get a specific project API key in OpenAI by project_id and id. Returns id, name, redacted_value, created_at, last_used_at, and owner details including user id, name, email, role, and added_at.
- **delete_a_openai_project_api_key_by_id** — Delete a specific project API key in OpenAI. Requires project_id and id. Returns object confirming deletion with fields: id (key identifier), deleted (boolean status), and object (type of response).
- **list_all_openai_project_rate_limits** — List project rate limits in OpenAI. Requires project_id. Returns id, model, max_requests_per_1_minute, max_tokens_per_1_minute, and max_images_per_1_minute for each rate limit.
- **update_a_openai_project_rate_limit_by_id** — Update a project rate limit in OpenAI. Requires project_id and id. Returns id, model, and rate limit values such as max_requests_per_1_minute, max_tokens_per_1_minute, and max_images_per_1_minute.
- **list_all_openai_audit_logs** — List audit logs in OpenAI. Returns id, type, effective_at, and actor details including user id and email, along with event-specific fields such as project.archived or api_key.updated.
- **list_all_openai_completions** — Get completions usage details in OpenAI for the organization. Requires start_time. Returns time-bucketed data objects with start_time, end_time, input_tokens, output_tokens, input_cached_tokens, audio tokens, num_model_requests, and identifiers for project_id, user_id, api_key_id, model, and batch.
- **list_all_openai_embeddings** — Get embeddings usage details for the organization in OpenAI. Requires start_time. Returns time-bucketed usage objects including input_tokens, num_model_requests, project_id, user_id, api_key_id, and model.
- **list_all_openai_moderations** — Get moderations usage details in OpenAI for an organization within a specified time range using start_time. Returns time-bucketed usage with start_time, end_time, input_tokens, num_model_requests, project_id, user_id, api_key_id, and model.
- **list_all_openai_images** — Get images usage details in OpenAI for an organization. Requires start_time. Response includes start_time and end_time for each bucket, with results showing images count, num_model_requests, size, source, project_id, user_id, api_key_id, and model.
- **list_all_openai_audio_speeches** — Get audio speeches usage details in OpenAI for an organization. Requires start_time. Returns buckets with start_time, end_time, and results including characters, num_model_requests, project_id, user_id, api_key_id, and model.
- **list_all_openai_audio_transcriptions** — Get audio transcriptions usage details for an organization in OpenAI. Requires start_time. Returns start_time, end_time, and usage results including seconds, num_model_requests, project_id, user_id, api_key_id, and model.
- **list_all_openai_vector_store** — Get vector stores usage details in OpenAI for an organization. Requires start_time. Returns buckets with start_time, end_time, and results including usage_bytes and project_id.
- **list_all_openai_code_interpreter_sessions** — Get code interpreter sessions usage in OpenAI for an organization. Requires start_time. Returns bucketed usage data with fields start_time, end_time, num_sessions, and project_id in results.
- **list_all_openai_costs** — Get costs for the organization in OpenAI. Requires start_time. Returns time bucketed costs with start_time, end_time, and results including amount (value, currency), line_item, and project_id.
- **get_single_openai_certificate_by_id** — Get a certificate in OpenAI by id. Returns id, name, created_at, and certificate_details including valid_at, expires_at, and optional content.
- **create_a_openai_certificate** — Upload a certificate in OpenAI for an organization using content. Returns a certificate object with fields id, name, created_at, and certificate_details including valid_at and expires_at.
- **update_a_openai_certificate_by_id** — Update a certificate in OpenAI using id. Only the name can be modified. Returns the updated certificate object with id, name, created_at, and certificate_details including valid_at and expires_at.
- **delete_a_openai_certificate_by_id** — Delete a certificate in OpenAI. Requires id. The certificate must be inactive for the organization and all projects. Returns object and id confirming deletion.
- **list_all_openai_organization_certificates** — List organization certificates in OpenAI. Returns id, name, active status, created_at timestamp, and certificate_details including valid_at and expires_at for each certificate.
- **openai_organization_certificates_activate** — Activate organization-certificates in OpenAI. Requires certificate_ids. Returns a list of certificates with id, name, active status, created_at, and certificate_details including valid_at and expires_at.
- **openai_organization_certificates_deactivate** — Deactivate up to 10 organization certificates in OpenAI. Requires certificate_ids. Returns a list of certificates with id, name, active status, created_at, and certificate_details including valid_at and expires_at.
- **list_all_openai_project_certificates** — List project certificates in OpenAI. Requires project_id. Returns id, name, active, created_at, and certificate_details (valid_at, expires_at) for each certificate.
- **openai_project_certificates_activate** — Activate certificates for a specific project in OpenAI. Requires project_id and certificate_ids. Returns certificate objects with id, name, active status, created_at, and certificate_details including valid_at and expires_at.
- **openai_project_certificates_deactivate** — Deactivate project-certificates in OpenAI for a given project_id. Deactivates up to 10 certificates atomically and idempotently. Returns certificate objects including id, name, active status, created_at, and certificate_details (valid_at, expires_at).
- **list_all_openai_invites** — List invites in OpenAI. Returns id, email, role, status, invited_at, expires_at, and accepted_at for each invite.
- **get_single_openai_invite_by_id** — Get a specific invite in OpenAI using id. Returns id, email, role, status, invited_at, expires_at, and accepted_at fields.
- **create_a_openai_invite** — Create an invite in OpenAI for a user using email and role. Returns the invite object with fields including id, email, role, status, invited_at, expires_at, accepted_at, and projects.
- **delete_a_openai_invite_by_id** — Delete an invite in OpenAI by id. If the invite has already been accepted, it cannot be deleted. Returns object confirming deletion with fields: id and deleted.
- **list_all_openai_admin_api_keys** — List all organization and project API keys in OpenAI. Returns id, name, redacted_value, created_at, last_used_at, and owner details including type, id, name, created_at, and role.
- **get_single_openai_admin_api_key_by_id** — Get an admin API key in OpenAI with id. Returns id, name, redacted_value, created_at, last_used_at, and owner details including type, id, name, created_at, and role.
- **create_a_openai_admin_api_key** — Create an admin API key in OpenAI. Requires name. Returns id, name, redacted_value, created_at, last_used_at, owner details, and value of the created key.
- **delete_a_openai_admin_api_key_by_id** — Delete a specific admin API key in OpenAI using id. Returns confirmation with id, object indicating deletion type, and deleted status.
- **create_a_openai_response** — Create a model response in OpenAI. Returns id, status, model, and output with assistant-generated content (type, text, annotations), along with usage details such as input_tokens, output_tokens, and total_tokens.
- **get_single_openai_response_by_id** — Get a model response in OpenAI. Requires id. Returns fields including id, status, model, output messages (with role and content), usage details (input_tokens, output_tokens, total_tokens), and metadata.
- **delete_a_openai_response_by_id** — Delete a specific response in OpenAI by id. Returns id of the deleted response, object type, and confirmation that deleted is true.
- **openai_response_cancel** — Cancel a response in OpenAI using id. Only responses created with background=true can be cancelled. Returns a response object with fields like id, status, model, output, and usage.
- **openai_response_input_items** — List input items for a specific response in OpenAI. Requires id. Returns id, type, role, and content fields with input text details.
- **get_single_openai_conversation_by_id** — Get a conversation in OpenAI by id. Returns id, object type, created_at timestamp, and metadata fields in the response.
- **create_a_openai_conversation** — Create a conversation in OpenAI. Returns id, object type, created_at timestamp, and metadata for the new conversation.
- **update_a_openai_conversation_by_id** — Update a conversation in OpenAI. Requires id. Returns the updated conversation with fields: id, object, created_at, and metadata.
- **delete_a_openai_conversation_by_id** — Delete a conversation in OpenAI using id. Returns id for the deleted conversation, object type as 'conversation.deleted', and deleted status.
- **list_all_openai_conversation_items** — List conversation-items in OpenAI for a specific conversation using conversation_id. Returns fields including id (unique item identifier), type (item type), status (completion state), role (sender role), and content (message or data payload).
- **get_single_openai_conversation_item_by_id** — Get a specific conversation-item in OpenAI using conversation_id and id. Returns type, id, status, role, and content fields that describe the item state, ownership, and message content.
- **create_a_openai_conversation_item** — Create items in a conversation in OpenAI. Requires conversation_id and items. Returns the created items with fields including id (unique identifier), type (item type), status (processing status), role (message role), and content (message body).
- **delete_a_openai_conversation_item_by_id** — Delete a conversation-item in OpenAI. Requires conversation_id and id. Returns the updated conversation object including id, object, created_at, and metadata fields.
- **create_a_openai_speech** — Create speech in OpenAI by providing input, model, and voice. Returns audio file content or a stream of audio events.
- **create_a_openai_transcription** — Create a transcription in OpenAI from an audio file using a specified model. Requires file and model. Returns text with usage details including input_tokens, output_tokens, and total_tokens.
- **create_a_openai_translation** — Create translation of an audio file in OpenAI. Requires file and model. Returns text containing the translated English transcription of the audio.
- **create_a_openai_image_generation** — Create an image in OpenAI using a prompt. Requires prompt. Returns created timestamp, data with image output (b64_json or url depending on model), and usage details including token counts.
- **create_a_openai_image_edit** — Create an edited or extended image in OpenAI. Requires image and prompt. Returns data containing b64_json or url for the generated image, depending on model and output format.
- **list_all_openai_evals** — List evals in OpenAI. Returns id (unique identifier of eval), name, data_source_config (type, metadata, schema), testing_criteria (grading configuration), created_at (timestamp), and metadata (description).
- **get_single_openai_eval_by_id** — Get an eval in OpenAI by id. Returns fields including id, data_source_config (schema used for evaluation), testing_criteria (evaluation checks), name, created_at, and metadata.
- **create_a_openai_eval** — Create a new eval in OpenAI. Requires data_source_config and testing_criteria. Returns eval id, data_source_config with schema, testing_criteria with graders, optional name, created_at timestamp, and metadata.
- **update_a_openai_eval_by_id** — Update an eval in OpenAI. Requires id. Returns fields including id, data_source_config with schema, testing_criteria details, name, created_at, and metadata.
- **delete_a_openai_eval_by_id** — Delete an eval in OpenAI. Requires id. Returns object (eval.deleted), deleted (confirmation), and eval_id (identifier of deleted eval).
- **list_all_openai_eval_runs** — List eval-runs for a specific evaluation in OpenAI. Requires eval_id. Returns runs with fields including id, eval_id, status, model, name, created_at, result_counts, per_model_usage, per_testing_criteria_results, and report_url.
- **get_single_openai_eval_run_by_id** — Get an eval run in OpenAI using eval_id and id. Returns id, eval_id, status, model, report_url, created_at, result_counts, and data_source details in the response.
- **create_a_openai_eval_run** — Create a new eval run in OpenAI for a given evaluation using eval_id. Returns run id, status, model, name, created_at, report_url, result_counts, data_source details, and metadata.
- **delete_a_openai_eval_run_by_id** — Delete an eval run in OpenAI. Requires eval_id and id. Returns object with deleted status, run_id, and object type.
- **openai_eval_runs_cancel** — Cancel an ongoing eval run in OpenAI. Requires eval_id and id. Returns the updated eval run object with fields like id, eval_id, status (canceled), report_url, model, created_at, result_counts, data_source, and input_messages.
- **list_all_openai_eval_run_output_items** — List eval run output items in OpenAI. Requires eval_id and run_id. Returns fields including id, status, datasource_item (with input and ground_truth), results (with score and pass/fail), and sample (with input, output, model, and usage details).
- **get_single_openai_eval_run_output_item_by_id** — Get a specific evaluation run output item in OpenAI. Requires eval_id, run_id, and id. Returns fields including id, status, datasource_item, results, sample (with input and output messages), usage, and model details.
- **list_all_openai_fine_tuning_jobs** — List fine-tuning jobs in OpenAI. Returns job id, model, created_at, fine_tuned_model, organization_id, result_files, status, validation_file, training_file, and metadata for each job.
- **create_a_openai_fine_tuning_job** — Create a fine-tuning job in OpenAI. Requires model and training_file. Response includes job id, status, and the name of the fine-tuned model once complete.
- **get_single_openai_fine_tuning_job_by_id** — Get details of a specific fine-tuning job in OpenAI. Requires id. Returns fields including model, created_at, finished_at, fine_tuned_model, organization_id, status, training_file, hyperparameters, and trained_tokens.
- **openai_fine_tuning_jobs_cancel** — Cancel a fine-tuning job in OpenAI. Requires id. Returns the cancelled fine-tuning job object with fields: id, model, created_at, fine_tuned_model, organization_id, result_files, status, validation_file, and training_file.
- **openai_fine_tuning_jobs_resume** — Resume a fine-tuning job in OpenAI. Requires id. Returns fine-tuning job object including id, model, created_at, fine_tuned_model, organization_id, result_files, status, validation_file, and training_file.
- **openai_fine_tuning_jobs_pause** — Pause a fine-tuning job in OpenAI. Requires id. Returns the fine-tuning job object with fields including id, model, created_at, fine_tuned_model, organization_id, result_files, status, validation_file, and training_file.
- **list_all_openai_fine_tuning_events** — List fine-tuning events for a job in OpenAI. Requires fine_tuning_job_id. Returns event id, created_at timestamp, level, message, optional data, and type for each fine-tuning job event.
- **list_all_openai_fine_tuning_checkpoints** — List fine-tuning checkpoints for a specific fine-tuning job in OpenAI. Requires fine_tuning_job_id. Returns checkpoint id, created_at, fine_tuned_model_checkpoint, metrics, fine_tuning_job_id, and step_number.
- **list_all_openai_checkpoint_permissions** — List checkpoint permissions in OpenAI for a fine-tuned model checkpoint. Requires id. Returns permission objects with fields id, created_at, and project_id.
- **create_a_openai_checkpoint_permission** — Create checkpoint permissions in OpenAI. Requires id of fine_tuned_model_checkpoint. Returns a list of checkpoint.permission objects with fields id, created_at, and project_id.
- **delete_a_openai_checkpoint_permission_by_id** — Delete a checkpoint permission in OpenAI. Requires fine_tuned_model_checkpoint and id. Returns id of the permission and deleted status.
- **list_all_openai_batches** — List batches in OpenAI. Returns batch objects including id, endpoint, status, input_file_id, output_file_id, error_file_id, lifecycle timestamps, request_counts, and metadata.
- **get_single_openai_batch_by_id** — Get a specific batch in OpenAI by id. Returns fields such as endpoint, status, request_counts, input_file_id, output_file_id, timestamps, and metadata for monitoring and tracking batch operations.
- **create_a_openai_batch** — Create a batch in OpenAI using input_file_id, endpoint, and completion_window. Returns batch id, status, input_file_id, endpoint, completion_window, file references, timestamps, request_counts, and metadata.
- **openai_batches_cancel** — Cancel a batch in OpenAI using id. Returns a batch object with fields including id, status (shows cancelling or cancelled), input_file_id, output_file_id, timestamps for lifecycle events, request_counts, and metadata.
- **list_all_openai_files** — List files in OpenAI. Returns id, object, bytes, created_at, expires_at, filename, and purpose for each file.
- **get_single_openai_file_by_id** — Get information about a specific file in OpenAI. Requires id. Returns id, object, bytes, created_at, expires_at, filename, and purpose fields in the response.
- **create_a_openai_file** — Upload a file in OpenAI. Requires file and purpose. Returns id, object, bytes, created_at, expires_at, filename, and purpose of the uploaded file.
- **delete_a_openai_file_by_id** — Delete a file in OpenAI. Requires id. Returns id of the file, object type, and deletion status.
- **create_a_openai_upload** — Create an upload in OpenAI. Requires bytes, filename, mime_type, and purpose. Returns an Upload object with id, bytes, filename, purpose, status, created_at, and expires_at.
- **openai_uploads_add** — Add a part to an upload in OpenAI. Requires id. The response returns id (the part identifier), object (type), created_at (timestamp), and upload_id (associated upload). Each part is limited to 64MB and total upload size to 8GB.
- **openai_uploads_complete** — Complete an upload in OpenAI using id. Requires part_ids in request body. Returns the Upload object with status 'completed' and a nested File object containing id, filename, bytes, purpose, and created_at.
- **openai_uploads_cancel** — Cancel an upload in OpenAI. Requires id. Returns the Upload object with id, object, bytes, created_at, filename, purpose, status, and expires_at fields. Once cancelled, no parts can be added.
- **list_all_openai_models** — List models in OpenAI. Returns model objects including id (unique identifier), created (timestamp), and owned_by (organization or user that owns the model).
- **get_single_openai_model_by_id** — Get a specific model in OpenAI using id. Returns fields id (model identifier), object (resource type), created (timestamp), and owned_by (model owner).
- **delete_a_openai_model_by_id** — Delete a fine-tuned model in OpenAI. Requires id. Returns id of the deleted model, object type, and deletion status.
- **list_all_openai_vector_stores** — List vector stores in OpenAI. Returns id, name, created_at, bytes, and file_counts for each vector store.
- **get_single_openai_vector_store_by_id** — Get a vector store in OpenAI by id. Returns id, object type, and created_at timestamp in the response.
- **create_a_openai_vector_store** — Create a vector store in OpenAI. Returns id, object, created_at, name, bytes, and file_counts indicating processing status of associated files.
- **update_a_openai_vector_store_by_id** — Update a vector store in OpenAI by id. Returns fields including id, name, created_at, bytes, and file_counts (in_progress, completed, failed, cancelled, total).
- **delete_a_openai_vector_store_by_id** — Delete a vector store in OpenAI. Requires id. Returns id of the deleted vector store, object type indicating deletion, and deleted status.
- **list_all_openai_vector_store_search** — Search a vector store in OpenAI using vector_store_id and query. Returns results with file_id, filename, score, attributes, and content chunks.
- **list_all_openai_vector_store_files** — List vector store files in OpenAI by vector_store_id. Returns id, object, created_at, and vector_store_id for each file.
- **get_single_openai_vector_store_file_by_id** — Get a vector store file in OpenAI using vector_store_id and id. Returns id, object, created_at, vector_store_id, status, and last_error fields.
- **create_a_openai_vector_store_file** — Create a vector store file in OpenAI using vector_store_id and file_id. Returns fields including id (file identifier), object (resource type), created_at (timestamp), usage_bytes (storage size), vector_store_id (associated store), status (processing state), and last_error (error details if any).
- **delete_a_openai_vector_store_file_by_id** — Delete a specific vector store file in OpenAI using vector_store_id and id. This removes the file from the vector store but does not delete the underlying file. Returns id, object type, and deletion status in the response.
- **list_all_openai_vector_store_file_content** — Get parsed content of a specific vector store file in OpenAI. Requires vector_store_id and id. Returns file_id, filename, attributes, and content array with parsed data.
- **create_a_openai_vector_store_file_batch** — Create a vector store file batch in OpenAI. Requires vector_store_id and file_ids. Returns id, object, created_at, vector_store_id, status, and file_counts to track processing state and counts of files in different statuses.
- **list_all_openai_vector_store_file_batches** — List vector store files in a batch in OpenAI. Requires vector_store_id and batch_id. Returns file id, created_at timestamp, and vector_store_id for each file.
- **get_single_openai_vector_store_file_batch_by_id** — Get a specific vector store file batch in OpenAI using vector_store_id and id. Returns id, created_at, vector_store_id, status, and file_counts with counts of in_progress, completed, failed, cancelled, and total files.
- **openai_vector_store_file_batches_cancel** — Cancel a vector store file batch in OpenAI. Requires vector_store_id and id. Returns the modified file batch object with fields: id, object, created_at, vector_store_id, status, and file_counts for tracking batch progress.
- **list_all_openai_containers** — List containers in OpenAI. Returns id, object type, created_at, status, expires_after, last_active_at, and name fields for each container.
- **get_single_openai_container_by_id** — Get a specific container in OpenAI by id. Requires id. Returns container id, object type, created_at timestamp, status, expiration settings, last_active_at timestamp, and name.
- **create_a_openai_container** — Create a container in OpenAI. Requires name. Returns container id for identification, status for current state, created_at timestamp, last_active_at for activity tracking, and name.
- **delete_a_openai_container_by_id** — Delete a container in OpenAI by id. Returns id to confirm which container was deleted, object indicating the resource type, and deleted flag showing successful deletion.
- **list_all_openai_container_files** — List container files in OpenAI. Requires container_id. Returns id, created_at, bytes, container_id, path, and source for each file.
- **get_single_openai_container_file_by_id** — Get a specific container file in OpenAI using container_id and id. Returns id, object, created_at, bytes, container_id, path, and source for the file.
- **delete_a_openai_container_file_by_id** — Delete a container file in OpenAI. Requires container_id and id. Returns id of the deleted file, object type as container.file.deleted, and deleted status confirming removal.
- **list_all_openai_container_file_content** — Get container file content in OpenAI using container_id and id. Returns the binary content of the file.
- **list_all_openai_chat_completions** — List stored Chat Completions in OpenAI. Returns id, model, created timestamp, request_id, usage details, seed, top_p, temperature, penalties, system_fingerprint, service_tier, metadata, and choices with assistant message content.
- **get_single_openai_chat_completion_by_id** — Get a stored chat completion in OpenAI using id. Only completions created with store=true can be retrieved. Returns fields including id, model, created, usage (tokens), and choices with assistant message content and finish_reason.
- **create_a_openai_chat_completion** — Create a chat completion in OpenAI. Requires model and messages. Returns id, model, choices with assistant message content and refusal, finish_reason, and usage with prompt_tokens, completion_tokens, and total_tokens.
- **update_a_openai_chat_completion_by_id** — Update a stored chat completion in OpenAI by id. Requires id and metadata. Returns the chat completion with updated metadata, including fields such as id, model, created, usage, metadata, and choices with assistant message content.
- **delete_a_openai_chat_completion_by_id** — Delete a stored chat completion in OpenAI using id. Only completions created with store=true can be deleted. Returns object, id, and deleted fields confirming deletion status.
- **list_all_openai_assistants** — List assistants in OpenAI. Returns assistant objects with fields including id, created_at, name, model, instructions, tools, metadata, top_p, temperature, and response_format.
- **get_single_openai_assistant_by_id** — Get assistant in OpenAI using id. Returns fields including id, name, model, instructions, tools, metadata, top_p, temperature, and response_format.
- **create_a_openai_assistant** — Create an assistant in OpenAI with a required model. Returns id, name, description, model, instructions, tools, metadata, top_p, temperature, response_format, and created_at in the response.
- **update_a_openai_assistant_by_id** — Update an assistant in OpenAI using id. Returns assistant fields including id, name, description, model, instructions, tools, tool_resources, metadata, top_p, temperature, and response_format.
- **delete_a_openai_assistant_by_id** — Delete an assistant in OpenAI. Requires id. Returns id, object indicating 'assistant.deleted', and deleted status to confirm successful removal.
- **get_single_openai_thread_by_id** — Get a specific thread in OpenAI by id. Returns id, object type, created_at timestamp, metadata, and tool_resources for the thread.
- **create_a_openai_thread** — Create a thread in OpenAI. Returns id for thread identification, object type as 'thread', created_at timestamp, and optional metadata and tool_resources when provided.
- **update_a_openai_thread_by_id** — Update a thread in OpenAI by id. Only metadata can be modified. Returns the thread id, object type, created_at timestamp, metadata, and tool_resources.
- **delete_a_openai_thread_by_id** — Delete a thread in OpenAI by id. Returns id, object, and deleted status in the response.
- **list_all_openai_messages** — List messages in OpenAI for a given thread. Requires thread_id. Returns id, created_at, role, thread_id, content, attachments, and metadata for each message.
- **get_single_openai_message_by_id** — Get a specific message in OpenAI. Requires thread_id and id. Returns fields including id, object, created_at, thread_id, role, content, attachments, and metadata.
- **create_a_openai_message** — Create a message in OpenAI for a specific thread using thread_id. Requires role and content. Returns id, role, content with text and annotations, attachments, metadata, and thread_id in the response.
- **update_a_openai_message_by_id** — Update a specific message in OpenAI using thread_id and id. Returns message fields including id, object, created_at, thread_id, role, content, file_ids, and metadata.
- **delete_a_openai_message_by_id** — Delete a specific message in OpenAI. Requires thread_id and id. Response returns id for the deleted message, object type as thread.message.deleted, and deleted status.
- **list_all_openai_runs** — List runs in OpenAI for a given thread_id. Returns run objects with fields including id, status, model, created_at, assistant_id, usage (prompt_tokens, completion_tokens, total_tokens), and tool details.
- **get_single_openai_run_by_id** — Get a specific run in OpenAI. Requires thread_id and id. Returns fields including id, status, assistant_id, thread_id, created_at, completed_at, model, tools, and usage token details.
- **create_a_openai_run** — Create a run in OpenAI using thread_id and assistant_id. Returns id, status, assistant_id, thread_id, model, created_at, completed_at, tools, usage, temperature, top_p, and truncation_strategy in the response.
- **update_a_openai_run_by_id** — Modify a run in OpenAI. Requires thread_id and id. Returns the updated run object including status, assistant_id, thread_id, created_at, completed_at, model, tools, tool_resources, metadata, and usage fields.
- **openai_runs_cancel** — Cancel a run in OpenAI that is in_progress. Requires thread_id and id. Returns the modified run with fields such as status (updated to cancelling), assistant_id, thread_id, timestamps (created_at, started_at, expires_at), model, instructions, tools, and tool_resources.
- **list_all_openai_run_steps** — List run steps in OpenAI for a given thread_id and run_id. Returns step id, type, status, timestamps, step_details, and usage fields in the response.
- **get_single_openai_run_step_by_id** — Get a specific run step in OpenAI. Requires thread_id, run_id, and id. Returns fields including id, created_at, run_id, assistant_id, thread_id, type, status, step_details with message_id, and usage with tokens.

## How it works

1. **Link your customer's OpenAI 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 OpenAI.** The Proxy API is a 1-to-1 mapping of the OpenAI 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

- **Embed AI-powered copilots using your customers' own OpenAI accounts** — Let your users connect their OpenAI accounts so your SaaS can orchestrate Assistants, Threads, and Runs on their behalf — delivering stateful conversational AI without you footing the token bill or managing API keys directly.
- **Build multi-tenant RAG pipelines with customer-owned Vector Stores** — SaaS platforms can sync proprietary customer data into OpenAI Vector Stores, create Assistants attached to those stores, and let end-users query their own documents — all while Truto handles auth and tenant isolation across accounts.
- **Automate bulk AI processing with Batch jobs** — Offer your users overnight bulk operations like sentiment analysis, content rewriting, or document extraction by orchestrating OpenAI's Batches API through Truto, giving them 50% cost savings and no rate-limit headaches.
- **Surface AI cost and usage dashboards per customer workspace** — Pull cost data, audit logs, and project-level rate limits from your customers' OpenAI accounts to build internal billing dashboards, enforce usage quotas, and give end-users transparency into their AI spend.
- **Chain multimodal pipelines from audio transcription to structured output** — SaaS products handling voice data can use customers' OpenAI accounts to transcribe audio, run Chat Completions for structured extraction, and feed results back into workflows — all through a single Truto integration.

## What you can build

- **Stateful AI chat threads** — Create and manage OpenAI Threads, Messages, and Runs to deliver persistent, context-aware conversational experiences inside your product without rebuilding state management.
- **Knowledge base semantic search** — Upload customer documents into OpenAI Vector Stores via file batches and enable natural-language search over proprietary data using vector store search.
- **Per-tenant project provisioning and access control** — Automatically create OpenAI Projects, assign Project Users and Service Accounts, and manage Project API Keys to securely isolate each customer's AI resources.
- **AI usage metering and cost attribution** — Pull costs, audit logs, and project rate limits to attribute OpenAI spend to specific tenants and enforce consumption guardrails from within your platform.
- **Overnight bulk content generation** — Submit thousands of prompts via OpenAI's Batches API for large-scale content creation, classification, or extraction jobs that run asynchronously at reduced cost.
- **Voice-to-action pipeline** — Chain audio transcription and Chat Completions to automatically convert call recordings into structured action items, summaries, or CRM updates.

## FAQs

### How do end-users authenticate their OpenAI accounts through Truto?

End-users provide their OpenAI API key (admin or project-scoped) through Truto's secure credential storage. Truto manages the key lifecycle so your application never handles raw secrets directly.

### Can I manage OpenAI Projects and Users programmatically for multi-tenant isolation?

Yes. Truto exposes tools for creating, updating, listing, and archiving OpenAI Projects, as well as managing Project Users, Service Accounts, and Project API Keys — all mapped to the Unified User Directory API for Roles and Users.

### Which OpenAI operations does Truto support?

Truto supports a comprehensive set of operations including Chat Completions, Assistants, Threads, Messages, Runs, Vector Stores (with file management and search), Batches, Fine-Tuning Jobs, Audio Transcriptions and Speeches, Image Generation, Embeddings, Moderations, Evals, Files, Models, Containers, Costs, Audit Logs, Invites, Admin API Keys, Certificates, and Responses.

### How does Truto handle OpenAI rate limits?

You can read and update project-level rate limits via list_all_openai_project_rate_limits and update_a_openai_project_rate_limit_by_id. Truto also handles pagination across list endpoints automatically, so you don't need to manage cursor logic yourself.

### Can I track OpenAI costs and audit activity per customer?

Yes. Use list_all_openai_costs to pull usage cost data and list_all_openai_audit_logs to retrieve organization-level audit events — both are available as standard Truto tools on this integration.

### Does Truto support OpenAI's fine-tuning and evaluation workflows?

Yes. You can create and manage Fine-Tuning Jobs (including pause, resume, and cancel), list training events and checkpoints, and run Evals with full access to eval run output items for automated quality assurance.
