---
title: Optimizely API Integration on Truto
slug: optimizely
category: Feature Flag
canonical: "https://truto.one/integrations/detail/optimizely/"
---

# Optimizely API Integration on Truto



**Category:** Feature Flag  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 206 tools for Optimizely that AI agents can call directly.

- **list_all_optimizely_approvals** — List Approvals. List Approvals of a Flag Required: project_id.
- **delete_a_optimizely_attribute_by_id** — Archive an Attribute. Archive Attribute by ID Required: id.
- **create_a_optimizely_attribute** — Create an Attribute. Create an Attribue Required: key, project_id.
- **list_all_optimizely_attributes** — List Attributes. List Attributes under a Project Required: project_id.
- **get_single_optimizely_attribute_by_id** — Read an Attribute. Get Attribute by ID Required: id.
- **optimizely_attributes_partial_update** — Update an Attribute. Update an Attribute by ID Required: attribute_id.
- **get_single_optimizely_attribution_visitor_by_id** — Get bucketing information for a visitor. Get a list of experiments within a project a visitor has been exposed to Required: id, account_id.
- **create_a_optimizely_audience** — Create an Audience. Create an Audience for a Project Required: project_id.
- **list_all_optimizely_audiences** — List Audiences. List Audiences for a Project Required: project_id.
- **get_single_optimizely_audience_by_id** — Read an Audience. Get metadata for a single Audience Required: id.
- **optimizely_audiences_partial_update** — Update an Audience. Update an Audience for a Project Required: audience_id.
- **get_single_optimizely_billing_usage_by_id** — Get Impressions Usage. Get Impressions Usage by account id Required: id, usage_date_from, usage_date_to.
- **list_all_optimizely_billing_usage_summary** — Get Impressions Usage Summary. Get Impressions Usage Summary by account id Required: account_id.
- **delete_a_optimizely_campaign_by_id** — Archive a Campaign. Archive Campaign by ID Required: id.
- **create_a_optimizely_campaign** — Create a Campaign. Create a new Campaign in your account Required: project_id.
- **list_all_optimizely_campaigns** — List Campaigns. Get a list of all the Campaigns in a Project Required: project_id.
- **get_single_optimizely_campaign_by_id** — Read a Campaign. Get metadata for a single Campaign Required: id.
- **optimizely_campaigns_partial_update** — Update a Campaign. Update a campaign's metadata. Required: campaign_id.
- **list_all_optimizely_campaigns_results** — Get Campaign results. Get results for a Campaign Required: campaign_id.
- **list_all_optimizely_campaigns_results_csv** — Get Campaign results as a CSV. Get results for a Campaign as a CSV Required: campaign_id.
- **list_all_optimizely_campaigns_results_share** — Get a sharable link for the campaign's results page. This link allows read-only access for anyone to view the results, even if they don't have an Optimizely account. Because anyone can use the link, be careful where you share it. Required: campaign_id.
- **list_all_optimizely_catalogs_catalog** — Download a CSV with all current catalog data. Required: date, catalog_id.
- **list_all_optimizely_catalogs_stats** — Download a CSV with summary stats data. Required: date, catalog_id.
- **optimizely_change_requests_archive** — Archive a change request. Archive a resolved or rejected change request Required: project_id, change_request_id.
- **get_single_optimizely_change_request_by_id** — Get change request details. Get detailed information about a specific change request Required: id, project_id.
- **list_all_optimizely_change_requests** — List project change requests. List change requests across all flags in a project Required: project_id.
- **create_a_optimizely_change_requests_status** — Update the status of a change request. Approve, reject, or withdraw a change request Required: project_id, flag_key, environment_key, change_request_id, status.
- **list_all_optimizely_changes** — Retrieve changes for a project. Get a list of changes for a given project using optional filters. Required: project_id.
- **create_a_optimizely_collaborator** — Invite Collaborators. Invite collaborators to specific projects on an account
- **list_all_optimizely_collaborators** — List Collaborators. List all the Collaborators on your account, or filter by project_id to list Collaborators on a specific project
- **delete_a_optimizely_custom_event_by_id** — Archive a Custom Event. Required: id, project_id.
- **create_a_optimizely_custom_event** — Create a Custom Event. Create a Custom Event in a provided Project Required: project_id, key.
- **optimizely_custom_events_partial_update** — Update a Custom Event. Required: project_id, event_id.
- **get_single_optimizely_custom_field_by_id** — Read a Custom Field. Get Custom Field definition by ID Required: id.
- **delete_a_optimizely_environment_by_id** — Archive an Environment. Required: id.
- **create_a_optimizely_environment** — Create an Environment. Create an Environment in a provided Project Required: key, name, project_id.
- **list_all_optimizely_environments** — Get Environments by Project. Get all of the Environments that have been created in a given Project Required: project_id.
- **get_single_optimizely_environment_by_id** — Read an Environment. Get all the properties of a single Environment Required: id.
- **optimizely_environments_partial_update** — Update an Environment. Update an Environment by ID Required: environment_id.
- **list_all_optimizely_environments_datafile** — Read the datafile of an Environment. Get the datafile for an Environment. The Datafile is a JSON string that describes to the Full Stack SDK all the experiments and features running in a given environment and dependent entities like audiences and attributes. Normally, you won't need to interact with the datafile directly. The SDK exposes methods that operate on it internally. Required: environment_id.
- **create_a_optimizely_environments_policy** — Create an approval policy. Required: project_id, environment_id, name, is_default, default_preferences, approvers.
- **delete_a_optimizely_environments_policy_by_id** — Delete an approval policy. Required: id, project_id, environment_id.
- **get_single_optimizely_environments_policy_by_id** — Get an approval policy. Required: id, project_id, environment_id.
- **list_all_optimizely_environments_policies** — List approval policies for an environment. Required: project_id, environment_id.
- **optimizely_environments_policies_partial_update** — Update an approval policy. Required: project_id, environment_id, policy_id.
- **list_all_optimizely_environments_preferences** — Get Environment Approval Settings. Get the approval settings for a specific environment in a project. Required: project_id, environment_id.
- **optimizely_environments_preferences_bulk_update** — Update Environment Approval Settings. Update environment approval settings for a project and environment. This operation allows updating entity approval rules, default preferences, and notification configurations for an environment within a project. Required: project_id, environment_id.
- **list_all_optimizely_environments_preferences_by_project_id** — List Environment Approval Settings. List the approval settings for every environment in a project. Required: project_id.
- **get_single_optimizely_environments_rule_by_id** — Fetch the Rule for a Ruleset in an Environment. Fetch a Rule for a Ruleset in a specific Environment of a project. Required: id, project_id, flag_key, environment_key.
- **optimizely_environments_ruleset_disable** — Disable the Ruleset for a Flag in an Environment. Disables the entire Ruleset for a Flag in an Environment Required: project_id, flag_key, environment_key.
- **optimizely_environments_ruleset_enable** — Enable the Ruleset for a Flag in an Environment. Enables the entire Ruleset for a Flag in an Environment Required: project_id, flag_key, environment_key.
- **list_all_optimizely_environments_ruleset** — Fetch the Ruleset for a Flag in an Environment. Fetch a Ruleset for a Flag in a specific Environment of a project. The Ruleset contains the set of all Rules that apply to the Flag for that Environment. Required: project_id, flag_key, environment_key.
- **optimizely_environments_ruleset_bulk_update** — Update the Ruleset for a Flag in an Environment. Update the Ruleset for a Flag in a specific Environment of a project using a json patch structure. Properties that are read only that are present in the request body will be ignored as well as unknown properties. Required: project_id, flag_key, environment_key.
- **optimizely_environments_ruleset_validate_bulk_update** — Validate a Ruleset update payload. Validate a JSON patch payload against the existing Ruleset without persisting changes. Runs all the same validation as PATCH /ruleset but does not modify the database. Required: project_id, flag_key, environment_key.
- **get_single_optimizely_event_by_id** — Get Event by ID. Required: id.
- **list_all_optimizely_events** — List all Events. Get all Events for a Project. This endpoint lists all types of Events including Pageview Events which are stored as Pages. You can also get Goal objects from Optimizely Classic by setting the include_classic parameter to true. Required: project_id.
- **list_all_optimizely_experiment_summaries** — Summaries of Experiments and Campaigns. Summaries of Experiments and Campaigns in a Project Required: project_id.
- **delete_a_optimizely_experiment_by_id** — Archive an Experiment. Archive Experiment by ID Required: id.
- **create_a_optimizely_experiment** — Create an Experiment. Create an Experiment in a Project Required: project_id.
- **list_all_optimizely_experiments** — List Experiments. Get a list of all the Experiments by Project or Campaign. Either the project_id or campaign_id query parameter is required.
- **get_single_optimizely_experiment_by_id** — Read an Experiment. Get metadata for a single Experiment Required: id.
- **optimizely_experiments_partial_update** — Update an Experiment. Update an experiment by ID. Required: experiment_id.
- **list_all_optimizely_experiments_report** — Get Experiment Result's Report. Gets the outcome of the experiment as inferred by the Optimizely system upon the evaluation of variations that may or may not have reached statistical significance. Required: experiment_id.
- **list_all_optimizely_experiments_results** — Get Experiment results. Get results for a single Experiment Required: experiment_id.
- **list_all_optimizely_experiments_results_csv** — Get Experiment results as a CSV. Get results for a single Experiment as a CSV Required: experiment_id.
- **list_all_optimizely_experiments_results_share** — Get a sharable link for the experiment's results page. This link allows read-only access for anyone to view the results, even if they don't have an Optimizely account. Because anyone can use the link, be careful where you share it. Required: experiment_id.
- **list_all_optimizely_experiments_timeseries** — Get Experiment results time series. Get results time series for a single Experiment Required: experiment_id.
- **list_all_optimizely_export_credentials** — Get AWS credentials to access experimentation events export data. Get temporary credentials for experimentation events export data hosted on AWS.
- **list_all_optimizely_export_credentials_gcp** — Get GCP credentials to access experimentation events export data. Get a temporary access token for experimentation events export data hosted on GCP. The credentials are valid for one hour.
- **delete_a_optimizely_extension_by_id** — Archive an Extension. Archive an Extension by ID Required: id.
- **create_a_optimizely_extension** — Create an Extension. Create a new Extension in a provided project Required: edit_url, implementation, name, project_id.
- **get_single_optimizely_extension_by_id** — Get an Extension. Get an Extension by ID Required: id.
- **list_all_optimizely_extensions** — List Extensions. List Extensions under a project Required: project_id.
- **optimizely_extensions_partial_update** — Update an Extension. Update an extension by ID. Required: extension_id.
- **delete_a_optimizely_feature_by_id** — Archive a Feature. Required: id.
- **create_a_optimizely_feature** — Create a Feature. Required: key, project_id.
- **list_all_optimizely_features** — Get Features by Project. Get all of the Features that have been created in a given Project. Note this endpoint is incompatible with Full Stack Targeted Rollouts projects (default in accounts created after July 2020) and with non-legacy Full Stack projects (default in projects created after February 2021). See the compatible API at https://library.optimizely.com/docs/api/flags/v1/index.html#tag/Flags . Required: project_id.
- **get_single_optimizely_feature_by_id** — Read a Feature. Get metadata for a single Feature. Note this endpoint is incompatible with Full Stack Targeted Rollouts projects (default in accounts created after July 2020) and with non-legacy Full Stack projects (default in projects created after February 2021). See the compatible API at https://library.optimizely.com/docs/api/flags/v1/index.html#tag/Flags . Required: id.
- **optimizely_features_partial_update** — Update a Feature. Update a feature by ID. Required: feature_id.
- **get_single_optimizely_file_by_id** — Download a file. Download an uploaded file. The backend checks that the user has at least FLAGS_READ permission on the project, then streams the file content from GCS. Required: id, project_id.
- **create_a_optimizely_file** — Upload a file. Upload a file to be used by any feature that needs file attachments (e.g., test plans on rules). Returns a file_id and file_url (backend proxy path) for referencing the file. Requires FLAGS_MODIFY permission on the project. Required: project_id, file.
- **optimizely_flag_custom_fields_archive** — Archive a Custom Field. Archive a custom field within the specified project. Archived fields are excluded from required-value enforcement; the required setting is preserved so it is restored on unarchive. Required: project_id, custom_field_id.
- **create_a_optimizely_flag_custom_field** — Create a new Custom Field. Creates a new custom field within the specified project. Required: project_id, entity_type, field_type, key, name.
- **list_all_optimizely_flag_custom_fields** — List Custom Fields for a project. Get a list of Custom Fields within a Project. Required: project_id.
- **optimizely_flag_custom_fields_restore** — Unarchive a Custom Field. Unarchive a custom field within the specified project. Required: project_id, custom_field_id.
- **optimizely_flag_custom_fields_partial_update** — Update an existing Custom Field. Update fields of a custom field within the specified project. Required: project_id, custom_field_id.
- **list_all_optimizely_flag_environments** — List Environments. Get a list of Environments within a Project You can use query parameters to filter/sort the response. Required: project_id.
- **create_a_optimizely_flag_group** — Create an Exclusion Group. Creates a new exclusion group in a project. This operation corresponds to the create_url in a Groups response. Required properties must be present in the request body. Note that key for each object in "rules" (if provided), must be a stringified rule ID. Required: project_id, environment_key, name.
- **optimizely_flag_groups_archive** — Archive Exclusion Groups. Archive one or more exclusion groups in a project. This operation corresponds to the archive_url in a Groups response. Required: project_id.
- **delete_a_optimizely_flag_group_by_id** — Delete an Exclusion Group. Permanently delete an exclusion group by id. There will be no way to access this data after deleting. If you want to stop seeing a Group without deleting it permanently, archive instead. Required: id, project_id.
- **get_single_optimizely_flag_group_by_id** — Fetch a Single Exclusion Group. Fetch a single exclusion group by its id. This operation corresponds to the fetch_group_url in a Groups response. Required: id, project_id.
- **list_all_optimizely_flag_groups** — List Exclusion Groups. Get a list of exclusion groups within a project You can use query parameters to filter/sort the response. Required: project_id.
- **optimizely_flag_groups_restore** — Unarchive Exclusion Groups. Unarchive one or more exclusion groups in a project. This operation corresponds to the unarchive_url in a Groups response. Required: project_id.
- **optimizely_flag_groups_bulk_update** — Update Exclusion Groups. Update one or more Groups in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id.
- **create_a_optimizely_flag_holdout** — Create a new Holdout. Creates a new holdout experiment to establish a control group for measuring the impact of your feature flags and experiments. A holdout reserves a percentage of your traffic (specified in basis points) that will be excluded from seeing any experiments, allowing you to measure the overall impact of your experimentation program against a baseline control group. Required: project_id, key, name.
- **delete_a_optimizely_flag_holdout_by_id** — Delete a Holdout. Permanently and irreversibly delete a holdout by its unique ID. This is a destructive operation that cannot be undone. Required: id, project_id.
- **get_single_optimizely_flag_holdout_by_id** — Fetch a single Holdout. Retrieves detailed information about a specific holdout by its unique ID within a project. Required: id, project_id.
- **list_all_optimizely_flag_holdouts** — List Holdouts for a project. Get a list of Holdouts within a Project. Holdouts are experiments that reserve a portion of your traffic to measure the impact of your feature flags and experiments. They help establish a control group by excluding a percentage of users from seeing any experiments, allowing you to measure the overall impact of your experimentation program. Required: project_id.
- **create_a_optimizely_flag_holdouts_v_1** — Update a Holdout using JSON Patch. Updates a specific holdout using JSON Patch operations (RFC 6902). This endpoint allows you to modify individual properties of an existing holdout without replacing the entire resource. Required: project_id, holdout_id.
- **optimizely_flags_archive** — Archive Flags. Archive one or more Flags in a project. The request is rejected with a 409 if any Flag in the batch has an open approval request. Nothing is archived when this happens. This operation corresponds to the archive_url in a Flags response. Required: project_id.
- **create_a_optimizely_flag** — Create a New Flag. Creates a new Flag in a Project. This operation corresponds to the create_url in a Flags response. Required properties must be present in the request body. Required: project_id, key.
- **delete_a_optimizely_flag_by_id** — Delete a Flag. Permanently delete a Flag by key. There will be no way to access this data after deletion. If you want to stop seeing a Flag without deleting it permanently, try archiving instead. Required: id, project_id.
- **get_single_optimizely_flag_by_id** — Fetch a Single Flag. Fetch a single Flag in a Project by its key. This operation corresponds to the fetch_flag_url in a Flags response. Required: id, project_id.
- **list_all_optimizely_flags** — List Flags. Get a list of Flags within a Project You can use query parameters to filter/sort the response. Required: project_id.
- **optimizely_flags_restore** — Unarchive Flags. Unarchive one or more Flags in a project. This operation corresponds to the unarchive_url in a Flags response. Required: project_id.
- **optimizely_flags_bulk_update** — Update Flags. Update one or more Flags in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id.
- **create_a_optimizely_flags_approval** — Create a Approval for a flag in an environment. Create a change approval for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, actions, environment, reason.
- **get_single_optimizely_flags_approval_by_id** — Get Approval. Get Approval of a Flag Required: id, project_id, flag_key.
- **create_a_optimizely_flags_approval_status** — Update approval status for a flag in an environment. Update approval status for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, approval_id, status, reason.
- **create_a_optimizely_flags_duplicate** — Duplicate a Flag. Creates a new Flag in an Project, duplicating from an older flag. Required properties must be present in the request body. Required: project_id, flag_key, key.
- **list_all_optimizely_flags_entities** — Get Change History. Get entities associated for a specific Flag in a Project You can use query parameters to filter/sort the response. Required: project_id, flag_id.
- **list_all_optimizely_flags_status** — Get Flag Status. Fetch the status of a Flag by key. Returns status and days_since_last_modified. Required: project_id, flag_key.
- **create_a_optimizely_group** — Create an Exclusion Group. Create a new Exclusion Group in a provided project Required: name, project_id.
- **get_single_optimizely_group_by_id** — Get an Exclusion Group. Get an Exclusion Group by ID Required: id.
- **list_all_optimizely_groups** — List Exclusion Groups. List Exclusion Groups under a Project Required: project_id.
- **optimizely_groups_partial_update** — Update an Exclusion Group. Update an exclusion group by ID. Required: group_id.
- **delete_a_optimizely_group_by_id** — Archive an Exclusion Group. Archive an Exclusion Group by ID Required: id.
- **create_a_optimizely_holdout** — Create a cross-project Holdout. Creates a new holdout via a project-agnostic endpoint. Supports both global (applies to all rules in selected projects) and local (applies to specific rules) scopes. This endpoint does not require a project_id in the URL — the client provides project_id in the request body. Required field: project_id — The ID of the project that owns this holdout. Required: key, name.
- **delete_a_optimizely_holdout_by_id** — Delete a cross-project Holdout. Permanently deletes a holdout and all its cross-project target associations. Only holdouts in draft state can be deleted. Holdouts in running or concluded state cannot be deleted. Requires FLAGS_ADMIN permission on all projects targeted by the holdout. Gated behind the holdouts-m2 feature flag. Required: id.
- **get_single_optimizely_holdout_by_id** — Fetch a cross-project Holdout. Fetches a single holdout by ID without requiring a project_id in the URL. The response is filtered to only include projects and rules the user has FLAGS_READ permission on. Required: id.
- **list_all_optimizely_holdouts** — List holdouts across projects. Returns a paginated list of holdouts across all projects the authenticated user has permission to view. Supports optional filtering by project, status, archived state, and search query. Gated behind the holdouts-m2 feature flag. Required: project_id.
- **optimizely_holdouts_partial_update** — Update a cross-project Holdout. Update a holdout experiment using JSON Patch (RFC 6902) operations. Supports status transitions, configuration updates, and target changes. Required: holdout_id.
- **list_all_optimizely_holdouts_experiments** — Fetch experiments associated with a holdout. Retrieves a list of experiments that are connected to a specific holdout through the system's data relationships. Required: project_id, holdout_id.
- **list_all_optimizely_holdouts_results_csv** — Get Holdout results as a CSV. Get results for a Holdout as a CSV Required: project_id, holdout_id.
- **list_all_optimizely_internal_subject_access_requests** — List Subject Access Requests by data source and status. Get a list of Subject Access Requests by data source and status Required: data_source, status.
- **optimizely_internal_subject_access_requests_partial_update** — Update a Subject Access Request. Update a Subject Access Request by ID Required: request_id, status.
- **create_a_optimizely_internal_subject_access_request** — Update a Subject Access Request. Update a Subject Access Request by ID Required: request_id, status.
- **list_all_optimizely_invitations** — List Collaborators who have not yet accepted the invitations. List Collaborators who are yet to accept the invitations.
- **create_a_optimizely_list_attribute** — Create a List Attribute. Create a List Attribue with provided name , list_type and key_field . Fields description and list_content are optional. Required: key_field, name, project_id.
- **list_all_optimizely_list_attributes** — Get list attributes by project. Get all of the List Attributes that have been created in a given project. Required: project_id.
- **get_single_optimizely_list_attribute_by_id** — Read a List Attribute. Get metadata for a single List Attribute. Required: id.
- **optimizely_list_attributes_partial_update** — Update a List Attribute. Overwrite the List Attribute with the provided id. Required arguments are identical to creating a new List Attribute. Required: list_attribute_id.
- **delete_a_optimizely_list_attribute_by_id** — Archive a List Attribute. Archive List Attribute by ID Required: id.
- **list_all_optimizely_me** — Get current User information.
- **delete_a_optimizely_page_by_id** — Archived a Page. Archive a Page within a Project by ID Required: id.
- **create_a_optimizely_page** — Create a Page. Create a new Page in a provided Project Required: edit_url, name, project_id.
- **list_all_optimizely_pages** — List Pages. List all Pages for a Project Required: project_id.
- **get_single_optimizely_page_by_id** — Read a page. Get metadata for a single Page. Required: id.
- **optimizely_pages_partial_update** — Update a Page. Update a Page in a provided Project Required: page_id.
- **delete_a_optimizely_pages_event_by_id** — Archive an In-Page Event. Required: id, page_id.
- **create_a_optimizely_pages_event** — Create an In-Page Event. Create an Event that occurs in the context of a Page, such as measuring clicks Required: page_id, event_type, name.
- **optimizely_pages_events_partial_update** — Update an In-Page Event. Update an Event that occurs in the context of a Page, such as measuring clicks Required: page_id, event_id.
- **optimizely_permissions_projects_partial_update** — Change Permissions. Required: project_id, entity_type, entity_id.
- **get_single_optimizely_permissions_project_by_id** — Get Entity Permissions. Required: id, project_id, entity_type.
- **create_a_optimizely_permissions_team** — Create Team. Create a new team. Required: account_id, name.
- **delete_a_optimizely_permissions_team_by_id** — Delete Team. Delete a team. Required: id, account_id.
- **get_single_optimizely_permissions_team_by_id** — Get Team Info. Required: id, account_id.
- **list_all_optimizely_permissions_teams** — Get Teams. Get all teams for an account Required: account_id.
- **optimizely_permissions_teams_partial_update** — Update Team. Update an existing team's information. Required: account_id, team_id, name.
- **list_all_optimizely_permissions_teams_projects** — Get Team Permissions For Project Entity Type. Required: team_id, project_id, entity_type.
- **list_all_optimizely_permissions_users_projects** — Get User Permissions For Project Entity Type. Required: user_id, project_id, entity_type.
- **list_all_optimizely_plan** — Get Plan & Usage information for all products. Get Plan & Usage information for all products, only accessible for Administrators on the account
- **list_all_optimizely_policies** — List all approval policies for a project across all environments. Required: project_id.
- **create_a_optimizely_project** — Create a Project. Create a new Project in your account Required: name.
- **list_all_optimizely_projects** — List Projects. Get a list of all the Projects in your account, with associated metadata
- **get_single_optimizely_project_by_id** — Read a Project. Get all the properties of a single Project Required: id.
- **optimizely_projects_partial_update** — Update a Project. Required: project_id.
- **create_a_optimizely_projects_webhook** — Create a Webhook. Create a Webhook in a provided Project Required: project_id, description, events, name, url.
- **list_all_optimizely_projects_webhooks** — Get Webhooks by Project. Get all of the Webhooks that have been created in a given Project Required: project_id.
- **list_all_optimizely_recommenders** — Download a CSV with all computed recommendations output data. Required: date, catalog_id, recommender_id.
- **optimizely_reports_archive** — Archive Reports. Archive one or more Reports in an Environment of a Project. This operation corresponds to the archive_url in a Reports response. Required: project_id, environment_key.
- **delete_a_optimizely_report_by_id** — Delete a Report. Permanently delete a Report by key in an Environment of a project There will be no way to access this data after deletion. If you want to stop seeing a Report without deleting it permanently, try archiving instead. Required: id, project_id, environment_key.
- **get_single_optimizely_report_by_id** — Fetch a Single Report. Fetch a single Report in an Environment of a Project by its key. This operation corresponds to the fetch_report_url in a Report response. Required: id, project_id, environment_key.
- **list_all_optimizely_reports** — List Reports. Get a list of Reports for a specific Environment of a project You can use query parameters to filter/sort the response. Required: project_id, environment_key.
- **optimizely_reports_restore** — Unarchive Reports. Unarchive one or more Reports in an Environment of a Project. This operation corresponds to the unarchive_url in a Reports response. Required: project_id, environment_key.
- **create_a_optimizely_reports_reset_result** — Reset the results for a Report. Resetting the results for a Report will clear all the current results and results will be calculated from this point onwards. Use caution with this operation as there will be no way to access any previous results. Required: project_id, environment_key, report_key.
- **list_all_optimizely_revisions_compare** — Compare two revisions. Compare two revisions of the same entity. Returns the full revision records including snapshots for both the current and target revisions. Required: current, target, project_id.
- **list_all_optimizely_rule_holdouts** — Fetch holdouts for a specific rule_key. Fetch a list of holdouts for a specific rule_key Required: project_id, environment_key, rule_key.
- **get_single_optimizely_rule_by_id** — Fetch a Rule for a specific experiment_id. Required: id, project_id.
- **list_all_optimizely_rules** — List Rules. Get a list of Rules within a Project You can use query parameters to filter/sort the response. Required: project_id.
- **create_a_optimizely_ruleset_change_request** — Create a change request for a flag in an environment. Required: project_id, flag_key, environment_key, operations.
- **list_all_optimizely_ruleset_change_requests** — List change requests for a flag in an environment. List change requests for a specific flag in an environment Required: project_id, flag_key, environment_key.
- **delete_a_optimizely_scheduled_job_by_id** — Archive a Scheduled Job. Archive a Scheduled Job by ID Required: id.
- **create_a_optimizely_scheduled_job** — Create a Scheduled Job. Required: frequency, job_type, project_id.
- **list_all_optimizely_scheduled_jobs** — Get a list of Scheduled Jobs. Get the list of Scheduled Jobs that belong to your account
- **get_single_optimizely_scheduled_job_by_id** — Get a Scheduled Job. Get a Scheduled Job by ID Required: id.
- **optimizely_scheduled_jobs_partial_update** — Update a Scheduled Job. Update a Scheduled Job by ID Required: job_id.
- **create_a_optimizely_schedule** — Create a Schedule Change for a flag in an environment. Create a Scheduled Change for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, account_id, actions, schedule, environment.
- **delete_a_optimizely_schedule_by_id** — Delete a Scheduled Change for a flag in an environment. Required: id, project_id, flag_key.
- **list_all_optimizely_schedules** — List Scheduled changes of a flag. Required: project_id, flag_key.
- **optimizely_schedules_partial_update** — Update the Scheduled Change for a flag in an environment. Required: project_id, flag_key, schedule_id.
- **list_all_optimizely_search** — Search. Search for entities in your account by text string Required: query.
- **delete_a_optimizely_section_by_id** — Archive a Section by ID. Archive a Section by ID within the specified Multivariate Test Required: id, experiment_id.
- **create_a_optimizely_section** — Create a new Section in a Multivariate Test. Add a new Section to the Multivariate Test specified by experiment_id Required: experiment_id, variations.
- **get_single_optimizely_section_by_id** — Read a Section of a Multivariate Test. Get metadata for a single Multivariate Test Section Required: id, experiment_id.
- **list_all_optimizely_sections** — Read all the Sections in a Multivariate Test. Get a list of all Sections in a Multivariate Test Required: experiment_id.
- **optimizely_sections_partial_update** — Update a Section by ID. (Beta) Update a section by ID within the specified multivariate test. Required: section_id, experiment_id.
- **create_a_optimizely_subject_access_request** — Create a Subject Access Request. Required: data_type, identifier, identifier_type, request_type.
- **get_single_optimizely_subject_access_request_by_id** — Get Subject Access Request. Get Subject Access Requests by request id Required: id.
- **list_all_optimizely_subject_access_requests** — List Subject Access Requests. Fetch Subject Access Requests submitted from your account
- **create_a_optimizely_variable_definition** — Create Variable Definition. Required: flag_key, project_id, default_value, key, type.
- **delete_a_optimizely_variable_definition_by_id** — Delete a Variable Definition. Permanently delete a Variable Definition for a Flag. There will be no way to access this data after deletion. Required: id, project_id, flag_key.
- **get_single_optimizely_variable_definition_by_id** — Fetch a single variable definition by its key. Required: id, project_id, flag_key.
- **list_all_optimizely_variable_definitions** — Fetch all variable definitions for flag. Required: project_id, flag_key.
- **optimizely_variable_definitions_bulk_update** — Update Variable Definitions. Update one or more Variable Definitions in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id, flag_key.
- **optimizely_variations_archive** — Archive Variations. Archive one or more Variations for a Flag. This operation corresponds to the archive_url in a Variations response. Required: project_id, flag_key.
- **create_a_optimizely_variation** — Create a New Variation. Creates a new Variation for a specific Flag in a project. This operation corresponds to the create_url in a Variations response. Required properties must be present in the request body. Required: project_id, flag_key, key, name.
- **delete_a_optimizely_variation_by_id** — Delete a Variation. Permanently delete a Variation for a Flag. There will be no way to access this data after deletion. If you want to stop seeing a Variation without deleting it permanently, try archiving instead. Required: id, project_id, flag_key.
- **get_single_optimizely_variation_by_id** — Fetch a Single Variation. Fetch a single Variation for a Flag by its key. This operation corresponds to the fetch_variation_url in a Variations response. Required: id, project_id, flag_key.
- **list_all_optimizely_variations** — List Variations. Get a list of Variations for a specific Flag in a Project You can use query parameters to filter/sort the response. Required: project_id, flag_key.
- **optimizely_variations_restore** — Unarchive Variations. Unarchive one or more Variations for a Flag. This operation corresponds to the unarchive_url in a Variations response. Required: project_id, flag_key.
- **optimizely_variations_bulk_update** — Update Variations. Update one or more Variations for a specific Flag in a project using a JSON patch structure. Required: project_id, flag_key.
- **create_a_optimizely_variations_brainstorm** — Brainstorm variations definitions using AI. Required: project_id, flag_key, interactions.
- **delete_a_optimizely_webhook_by_id** — Delete a Webhook. Delete an Webhook Required: id.
- **get_single_optimizely_webhook_by_id** — Read a Webhook. Get all the properties of a single Webhook Required: id.
- **optimizely_webhooks_partial_update** — Update a Webhook. Update a webhook by ID Required: webhook_id, description, events, name, url.

## How it works

1. **Link your customer's Optimizely 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 Optimizely.** The Proxy API is a 1-to-1 mapping of the Optimizely 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 feature flag context into product management tools** — Give PMs and engineers visibility into Optimizely flag states directly inside tasks, PRs, or tickets so they never have to context-switch to check if a feature is live in staging or production.
- **Power customer support with real-time flag attribution** — Let support agents see exactly which flag variations and experiments a specific user is exposed to when debugging tickets, eliminating 'I can't reproduce this bug' scenarios caused by active A/B tests.
- **Correlate flag changes with incidents and observability data** — Overlay Optimizely flag toggles onto APM error charts and alerts so on-call engineers can identify the exact flag change that caused a regression and trigger an instant kill switch from your product.
- **Merge experiment results into analytics dashboards** — Pull Optimizely experiment outcomes, timeseries, and statistical significance into product analytics or BI platforms so growth teams can tie feature variations to long-term retention and revenue.
- **Route flag approvals through external change management** — Allow ITSM and governance platforms to act as the approval layer for production flag changes, creating and resolving Optimizely change requests from inside existing enterprise workflows.

## What you can build

- **Live flag status widget** — Render ON/OFF state per environment inside any task, ticket, or PR by referencing an Optimizely flag key, powered by flag and ruleset endpoints.
- **One-click kill switch** — Expose a button in your UI that calls ruleset disable to instantly turn off a feature in a specific environment without requiring the user to log into Optimizely.
- **Visitor attribution debugger** — Look up a user by ID and surface every experiment, variation, and flag decision they're currently receiving to accelerate support triage.
- **Audience sync** — Push user cohorts from your CDP or CRM into Optimizely audiences and keep targeting rules in sync as segments change on your side.
- **Flag change webhooks and audit timeline** — Subscribe to project webhooks to stream flag, ruleset, and change request events into your product as an audit log or incident timeline.
- **Experiment results importer** — Pull experiment summaries, results, and timeseries data on a schedule to build native experimentation ROI dashboards inside your SaaS.

## FAQs

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

Truto handles the Optimizely auth flow for you so your users can connect their account from inside your product. Truto stores and refreshes credentials, and your app calls Truto's unified request layer without ever handling tokens directly.

### Which Optimizely resources can we read and write through Truto?

Truto exposes the full set of Feature Experimentation resources including flags, flag environments, rulesets, rules, variations, variable definitions, audiences, attributes, experiments, experiment results and timeseries, change requests, approvals, projects, environments, webhooks, and visitor attribution.

### Can we toggle a flag on or off programmatically?

Yes. Truto exposes ruleset enable and disable operations per environment, so you can build kill-switch and progressive rollout controls directly into your product.

### Does Truto support Optimizely's governance and approval workflows?

Yes. You can create flag approvals, create ruleset change requests, list and fetch change requests, and update their status — enabling you to drive Optimizely's change management from external ITSM or workflow tools.

### How do we debug what a specific user is seeing in Optimizely?

Use the attribution visitor endpoint through Truto to fetch a single visitor by ID and retrieve the flags, experiments, and variations they are currently bucketed into — ideal for support and QA tooling.

### Can we receive real-time notifications when flags change?

Yes. Truto supports creating and listing Optimizely project webhooks, so your product can react to flag, ruleset, and configuration changes as they happen rather than polling.

### How does Truto handle Optimizely's pagination and rate limits?

Truto normalizes pagination across list endpoints and transparently handles Optimizely's rate limiting with retries and backoff, so you can iterate through large sets of flags, experiments, or audiences without writing that logic yourself.
