Some products and features are in the process of being renamed. Generative playbook and flow features are also being migrated to a single consolidated console. See the details.
Required. The name of the session this query is sent to. Format: projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/sessions/<SessionID> or projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/sessions/<SessionID>. If Environment ID is not specified, we assume default 'draft' environment. It's up to the API caller to choose an appropriate Session ID. It can be a random number or some type of session identifiers (preferably hashed). The length of the Session ID must not exceed 36 characters.
Authorization requires the following IAM permission on the specified resource session:
dialogflow.sessions.detectIntent
Request body
The request body contains data with the following structure:
JSON representation
{"matchIntentRequest": {"session": string,"queryParams": {"timeZone": string,"geoLocation": {object (LatLng)},"sessionEntityTypes": [{object (SessionEntityType)}],"payload": {object},"parameters": {object},"parameterScope": string,"currentPage": string,"disableWebhook": boolean,"analyzeQueryTextSentiment": boolean,"webhookHeaders": {string: string,...},"flowVersions": [string],"currentPlaybook": string,"llmModelSettings": {object (LlmModelSettings)},"channel": string,"sessionTtl": string,"endUserMetadata": {object},"searchConfig": {object (SearchConfig)},"populateDataStoreConnectionSignals": boolean},"queryInput": {"languageCode": string,// Union field input can be only one of the following:"text": {object (TextInput)},"intent": {object (IntentInput)},"audio": {object (AudioInput)},"event": {object (EventInput)},"dtmf": {object (DtmfInput)},"toolCallResult": {object (ToolCallResult)}// End of list of possible types for union field input.},"persistParameterChanges": boolean},"match": {object (Match)},"outputAudioConfig": {object (OutputAudioConfig)}}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-27 UTC."],[[["\u003cp\u003eThis endpoint, \u003ccode\u003efulfillIntent\u003c/code\u003e, is used to fulfill a matched intent previously identified by the \u003ccode\u003esessions.matchIntent\u003c/code\u003e method.\u003c/p\u003e\n"],["\u003cp\u003eThe HTTP request to fulfill an intent is a \u003ccode\u003ePOST\u003c/code\u003e request to the specified endpoint, using gRPC Transcoding syntax.\u003c/p\u003e\n"],["\u003cp\u003eThe required \u003ccode\u003ematchIntentRequest.session\u003c/code\u003e path parameter defines the session's name, following a specific format, with authorization necessitating a \u003ccode\u003edialogflow.sessions.detectIntent\u003c/code\u003e IAM permission.\u003c/p\u003e\n"],["\u003cp\u003eThe request body, structured in JSON, includes fields such as \u003ccode\u003equeryParams\u003c/code\u003e, \u003ccode\u003equeryInput\u003c/code\u003e, \u003ccode\u003epersistParameterChanges\u003c/code\u003e, \u003ccode\u003ematch\u003c/code\u003e, and \u003ccode\u003eoutputAudioConfig\u003c/code\u003e to provide detailed information for fulfilling the intent.\u003c/p\u003e\n"],["\u003cp\u003eSuccessful requests receive a \u003ccode\u003eFulfillIntentResponse\u003c/code\u003e, and the operation requires one of two specific OAuth authorization scopes.\u003c/p\u003e\n"]]],[],null,["# Method: projects.locations.agents.environments.sessions.fulfillIntent\n\n- [HTTP request](#body.HTTP_TEMPLATE)\n- [Path parameters](#body.PATH_PARAMETERS)\n- [Request body](#body.request_body)\n - [JSON representation](#body.request_body.SCHEMA_REPRESENTATION)\n - [JSON representation](#body.request_body.SCHEMA_REPRESENTATION.match_intent_request.SCHEMA_REPRESENTATION)\n - [JSON representation](#body.request_body.SCHEMA_REPRESENTATION.match_intent_request.SCHEMA_REPRESENTATION_1)\n- [Response body](#body.response_body)\n- [Authorization scopes](#body.aspect)\n- [Try it!](#try-it)\n\nFulfills a matched intent returned by [sessions.matchIntent](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.sessions/matchIntent#google.cloud.dialogflow.cx.v3beta1.Sessions.MatchIntent). Must be called after [sessions.matchIntent](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.sessions/matchIntent#google.cloud.dialogflow.cx.v3beta1.Sessions.MatchIntent), with input from [MatchIntentResponse](/dialogflow/cx/docs/reference/rest/v3beta1/MatchIntentResponse). Otherwise, the behavior is undefined.\n\n### HTTP request\n\n`POST https://{endpoint}/v3beta1/{matchIntentRequest.session=projects/*/locations/*/agents/*/environments/*/sessions/*}:fulfillIntent`\n\nWhere `{endpoint}` is one of the [supported service endpoints](/dialogflow/cx/docs/reference/rest#rest_endpoints).\n\nThe URLs use [gRPC Transcoding](https://google.aip.dev/127) syntax.\n\n### Path parameters\n\n### Request body\n\nThe request body contains data with the following structure:\n\n### Response body\n\nIf successful, the response body contains an instance of [FulfillIntentResponse](/dialogflow/cx/docs/reference/rest/v3beta1/FulfillIntentResponse).\n\n### Authorization scopes\n\nRequires one of the following OAuth scopes:\n\n- `https://www.googleapis.com/auth/cloud-platform`\n- `\n https://www.googleapis.com/auth/dialogflow`\n\nFor more information, see the [Authentication Overview](/docs/authentication#authorization-gcp)."]]