Method: projects.locations.agents.environments.sessions.fulfillIntent

Fulfills a matched intent returned by sessions.matchIntent. Must be called after sessions.matchIntent, with input from MatchIntentResponse. Otherwise, the behavior is undefined.

HTTP request

POST https://{endpoint}/v3/{matchIntentRequest.session=projects/*/locations/*/agents/*/environments/*/sessions/*}:fulfillIntent

Where {endpoint} is one of the supported service endpoints.

The URLs use gRPC Transcoding syntax.

Path parameters



Required. The name of the session this query is sent to. Format: projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>/sessions/<Session ID> or projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>/environments/<Environment ID>/sessions/<Session ID>. 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.

For more information, see the sessions guide.

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": {
      "parameters": {
      "currentPage": string,
      "disableWebhook": boolean,
      "analyzeQueryTextSentiment": boolean,
      "webhookHeaders": {
        string: string,
      "flowVersions": [
    "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)
      // End of list of possible types for union field input.
  "match": {
    object (Match)
  "outputAudioConfig": {
    object (OutputAudioConfig)

object (QueryParameters)

The parameters of this query.


object (QueryInput)

Required. The input specification.


object (Match)

The matched intent/event to fulfill.


object (OutputAudioConfig)

Instructs the speech synthesizer how to generate output audio.

Response body

If successful, the response body contains an instance of FulfillIntentResponse.

Authorization Scopes

Requires one of the following OAuth scopes:


For more information, see the Authentication Overview.