)]}'
{"id": 5134603979063296, "name": "Prompt API", "summary": "Prompt API gives web developers direct access to a browser-provided on-device AI language model. The API design offers fine-grained control, aligned with cloud API shapes, for progressively enhancing sites with model interactions tailored to individualized use cases. This complements task-based language model APIs, for example, Summarizer API, as well as a variety of APIs and frameworks for generalized on-device inference with developer-supplied ML models. \n\nThe initial implementation supports text, image, and audio inputs. In addition, response constraints ensure that generated text conforms with predefined regex and JSON schema formats.\n\nThis supports a variety of use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from multi-modal source material.\n\nThis API has been shipped in [Chrome Extensions](https://chromewebstore.google.com/category/extensions). An enterprise policy [GenAILocalFoundationalModelSettings](https://chromeenterprise.google/policies/#GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading, which would render this API unavailable. Enterprise admins can also set the [BuiltInAIAPIsEnabled](https://chromeenterprise.google/policies/#BuiltInAIAPIsEnabled) policy to block Built-In AI API usage, while still permitting other on-device GenAI features.\n\nLanguage support log:\n- Chrome M139 and earlier only supported English ('en')\n- Chrome M140 added support for Spanish and Japanese ('es' and 'ja')\n", "markdown_fields": ["summary"], "blink_components": ["Blink > AI > Prompt"], "star_count": 158, "search_tags": ["LanguageModel", "Language Model", "Prompt API", "Built-in AI"], "created": {"by": "ayui@chromium.org", "when": "2025-04-22 23:00:10.424477"}, "updated": {"by": "elmirakalali@google.com", "when": "2026-04-22 21:01:21.034975"}, "category": "Miscellaneous", "category_int": 2, "feature_notes": "Although this feature exposes an on-device language model, the language model is never trained on, and does not have access to, any local user-specific data.", "web_feature": "languagemodel", "is_official_web_feature": true, "webdx_usecounter_enum": "", "enterprise_feature_categories": ["2", "3"], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": true, "is_releasenotes_publish_ready": true, "stages": [{"id": 5168301487161344, "created": "2025-04-22 23:00:11.050600", "feature_id": 5134603979063296, "stage_type": 110, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5120638960009216, "created": "2025-04-22 23:00:11.123774", "feature_id": 5134603979063296, "stage_type": 120, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra_LXU8KkcVJ0x%3DzYa4h_sC3FaHGdaoM59FNwwtRAsOALQ%40mail.gmail.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5162448520478720, "created": "2025-04-22 23:00:11.239538", "feature_id": 5134603979063296, "stage_type": 130, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 137, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5199818762485760, "created": "2025-04-22 23:00:11.304856", "feature_id": 5134603979063296, "stage_type": 140, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5130756292345856, "created": "2025-04-22 23:00:11.369949", "feature_id": 5134603979063296, "stage_type": 150, "display_name": "Prompt API", "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra9oT0jygAYT00WPp0_wtZ-znrB2OdZ6GQb%2B3thFLP19pA%40mail.gmail.com", "announcement_url": null, "experiment_goals": "Validate the technical implementation and developer experience of multimodal inputs with a broader audience and actual usage.\n\nAssess how structured output improves ergonomics and could address interoperability concerns between implementations (e.g. different underlying models).\n\nGather extensive feedback from a wide range of web developers rooted in real world usage, especially with regards to output quality, multilingual support, and what types of input data are handled well vs. poorly.\n\nIdentify diverse and innovative use cases to inform a roadmap of task APIs.", "experiment_risks": null, "origin_trial_id": "2533837740349325313", "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": "AIPromptAPIMultimodalInput", "ot_description": "Prompt API allows interacting with an AI language model using text, image, and audio inputs. It supports various use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from text. It supports structured outputs which ensure that responses adhere to a predefined format, typically expressed as a JSON schema, to enhance response conformance and facilitate seamless integration with downstream applications that require standardized output formats.", "ot_display_name": "Prompt API", "ot_documentation_url": "https://github.com/webmachinelearning/prompt-api/blob/main/README.md", "ot_emails": ["msw@google.com", "btriebw@google.com", "kenjibaheux@google.com", "ayui@google.com"], "ot_feedback_submission_url": "https://github.com/webmachinelearning/prompt-api/issues", "ot_has_third_party_support": true, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "msw@google.com", "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": 5405, "ot_webfeature_use_counter": "kLanguageModel_Create", "extensions": [{"id": 5148420752932864, "created": "2025-12-03 21:37:15.481868", "feature_id": 5134603979063296, "stage_type": 151, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJcT_ZhyheBntZHMEwFJA%3DuhpkWmDx8yFieL5E5g%2Bwp5UA0mzQ%40mail.gmail.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "dbogadi@chromium.org", "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": "We are requesting an extension for the Prompt API trial. This is primarily to allow us to:\n\n1) Gather more feedback from developers.\n2) Address critical bugs related to quality and language support.\n3) Help finalize the API design, considering the impact of features like function calling.\n\nMore time will help us deliver a more robust API.", "ot_stage_id": 5130756292345856, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 147, "android_last": null, "ios_last": null, "webview_last": null}], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": 0, "enterprise_policies": [], "desktop_first": 139, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 144, "android_last": null, "ios_last": null, "webview_last": null, "ot_activation_date": "2025-06-23", "ot_setup_status": 6}, {"id": 5078379837259776, "created": "2025-04-22 23:00:11.764972", "feature_id": 5134603979063296, "stage_type": 160, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJcT_Zj73wjXZfmMcpQRWePp-H%3D5LzxYBOnasViYcn%3DFzY2vVQ%40mail.gmail.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 148, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-04-21 18:11:01.924610", "creator_email": "ayui@chromium.org", "updater_email": "elmirakalali@google.com", "owner_emails": ["msw@chromium.org", "reillyg@chromium.org", "kenjibaheux@chromium.org", "dbogadi@chromium.org"], "editor_emails": ["dbogadi@chromium.org", "dbogadi@google.com"], "cc_emails": [], "spec_mentor_emails": ["reillyg@chromium.org"], "unlisted": false, "deleted": false, "editors": ["dbogadi@chromium.org", "dbogadi@google.com"], "cc_recipients": [], "spec_mentors": ["reillyg@chromium.org"], "creator": "ayui@chromium.org", "feature_type": "New or changed feature", "feature_type_int": 0, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5078379837259776, "bug_url": "https://crbug.com/417526788", "launch_bug_url": "https://launch.corp.google.com/launch/4461863", "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink > AI > Prompt&blocking=417526788&cc=msw@chromium.org,reillyg@chromium.org,kenjibaheux@chromium.org,dbogadi@chromium.org", "screenshot_links": [], "first_enterprise_notification_milestone": 137, "enterprise_impact": 2, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": "prompt-api-for-gemini-nano-multimodal-input", "finch_name": "AIPromptAPIMultimodalInput", "non_finch_justification": null, "ongoing_constraints": null, "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "Direct access to a language model can help web developers accomplish tasks beyond those with dedicated APIs (e.g. Summarizer API) , and tailor their usage for site-specific requirements. Compared to the low-level APIs approach (e.g a custom AI model run via WebGPU, WASM, or WebNN), using the built-in language model can save the user's bandwidth and disk space, and has a lower barrier to entry. The design offers simple shorthands for common patterns (e.g. await session.prompt(\u2018write a haiku\u2019)), and supports more complex use cases for handling structured content sequences, streaming responses, availability checks, session management, and response constraints.", "devtrial_instructions": "https://developer.chrome.com/docs/ai/prompt-api", "activation_risks": "This feature would definitely benefit from having polyfills (https://www.npmjs.com/package/prompt-api-polyfill), backed by any of: cloud services, lazily-loaded client-side models using WebGPU/WASM/WebNN, or the web developer's own server. We anticipate seeing an ecosystem of polyfills and client frameworks grow as more developers experiment with this API.", "measurement": "The API has use counters for all methods and attributes e.g.:\nLanguageModel_Create\nLanguageModel_Availability\nLanguageModel_Prompt\nLanguageModel_PromptStreaming\nLanguageModel_Append\nLanguageModel_MeasureContextUsage\nLanguageModel_OnContextOverflow\nLanguageModel_ContextUsage\nLanguageModel_ContextWindow\nLanguageModel_Clone\nLanguageModel_Destroy", "availability_expectation": null, "adoption_expectation": null, "adoption_plan": null, "initial_public_proposal_url": "https://github.com/webmachinelearning/charter/pull/9", "explainer_links": ["https://github.com/webmachinelearning/prompt-api/blob/main/README.md"], "requires_embedder_support": true, "spec_link": "http://webmachinelearning.github.io/prompt-api", "api_spec": true, "automation_spec": false, "interop_compat_risks": "The Prompt API is designed to provide a stable and interoperable surface for language model interactions, acknowledging the inherent diversity and non-deterministic nature of underlying models. Variance in behaviors and responses is a well understood expectation amongst developers employing this technology, and this API aims to provide an interoperable framework for consistent web platform access across browsers and models.\n\nThe Prompt API specifically aims to maximize compatibility by:\n- Codifying an interoperable API surface for generalized language model interactions, so developers can write code that works across different browser engines and models. This surface has demonstrated compatibility with models from Google and Microsoft, and been polyfilled by extensions and JS frameworks, using different backends.\n- Enforcing objective response conformance with constraints that ensure output adheres to known JSON schemas or regexes for interoperable processing of generated text.\n- Supporting progressive enhancement patterns, by offering availability signals that encapsulate device and model support dimensions, and encourage developers to consider this API as one option among varied compatible AI offerings, including developer supplied models and cloud-based services.\n\nShipping this API provides a critical opportunity to broaden real-world implementation experience, explore future refinements, and collaborate with the web community on interoperable model diversity within a robust, predictable platform surface.\n", "all_platforms": null, "all_platforms_descr": "The initial launch focuses on Windows, Mac, Linux, and ChromeOS (on Chromebook Plus devices). An implementation for Android using that platform\u2019s OS-level built-in language model is being prototyped and will ship  after the initial launch.\n", "non_oss_deps": "Yes: this feature depends on a language model, which is bridged to the open-source parts of the implementation via the interfaces in //services/on_device_model.", "anticipated_spec_changes": "Params may be re-added after addressing interop concerns:\nhttps://github.com/webmachinelearning/prompt-api/issues/170\n\nIdentifiers have been renamed for clarity before Web GA launch:\nhttps://github.com/webmachinelearning/prompt-api/issues/177\n\nAny post-launch additive changes should be backwards compatible: e.g. tool use, multimodal sampling info/options and outputs, session history access, model info/options, etc.", "security_risks": null, "ergonomics_risks": "The API deprecated parameters and renamed identifiers, leaving legacy access for previously launched extension contexts. We plan to align the web and extension surfaces through careful additive changes and cautious deprecation processes. Developers are encouraged to use the new identifier names in both contexts and observe deprecation messages regarding planned API alignments.", "wpt": null, "wpt_descr": "Web platform tests cover the API surface adequately:\nhttps://wpt.fyi/results/ai/language-model\n\nThese attempt to mitigate execution environments differences, e.g. stub/full implementations (content_shell, chrome), and device/model states (unavailable, downloadable, downloaded). The core responses of real models can be unpredictable (especially without sampling parameters) and may cause inconsistent test results, but some facets are more readily testable, e.g. the adherence to structured output response constraints. Test coverage and reliability improvements are ongoing, including planning for WebDriver extensions.", "webview_risks": "Not Applicable; this API is not available in WebView.", "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "The API surface supports basic DevTools debugging. Perfetto tracing (via optimization_guide and other events) is useful, and internal debugging pages which give more detail on the model's status, e.g. chrome://on-device-internals might be suitable to port into DevTools. \n\nThe team is maintaining extensions (https://chromewebstore.google.com/detail/webai-extension/lmjgpcigjcffnphimblhcoccjfefamcp) of DevTools panels for improving debuggability. It is possible that giving more insight into the nondeterministic states of the model, e.g. random seeds, could help with debugging.", "doc_links": [], "sample_links": ["https://chrome.dev/web-ai-demos/prompt-api-playground", "https://chrome.dev/web-ai-demos/prompt-api-weather", "https://ai.etiennenoel.com/prompt-api", "https://ai.etiennenoel.com/multimodal-prompt-api", "https://www.clarkduvall.com/ai"], "prefixed": null, "tags": ["LanguageModel", "Language Model", "Prompt API", "Built-in AI"], "tag_review": "https://github.com/w3ctag/design-reviews/issues/1093", "tag_review_status": "Issues addressed", "tag_review_status_int": 3, "security_review_status": "Pending", "security_review_status_int": 1, "privacy_review_status": "Pending", "privacy_review_status_int": 1, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": ["https://chrome.dev/web-ai-demos/prompt-api-playground", "https://chrome.dev/web-ai-demos/prompt-api-weather", "https://ai.etiennenoel.com/prompt-api", "https://ai.etiennenoel.com/multimodal-prompt-api", "https://www.clarkduvall.com/ai"], "docs": []}, "comments": "Although this feature exposes an on-device language model, the language model is never trained on, and does not have access to, any local user-specific data.", "ff_views": 5, "safari_views": 5, "web_dev_views": 1, "browsers": {"chrome": {"bug": "https://crbug.com/417526788", "blink_components": ["Blink > AI > Prompt"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["msw@chromium.org", "reillyg@chromium.org", "kenjibaheux@chromium.org", "dbogadi@chromium.org"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 148, "android": null, "webview": null, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1213", "notes": "", "text": "Negative", "val": 7}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/495", "notes": "", "text": "Oppose", "val": 7}}, "webdev": {"view": {"text": "Strongly positive", "val": 1, "url": "https://github.com/webmachinelearning/prompt-api/blob/main/README.md#stakeholder-feedback", "notes": ""}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": "Microsoft Edge developers have been strong collaborators with notable contributions including structured output, and forthcoming tool use enhancements."}}}, "standards": {"spec": "http://webmachinelearning.github.io/prompt-api", "maturity": {"text": "Specification being incubated in a Community Group", "short_text": "Incubation", "val": 3}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}