There are two different Lambda integrations you can configure in API Gateway:

  1. Lambda non-proxy integration (docs), also called Lambda custom integration
  2. Lambda proxy integration (docs)

For Lambda non-proxy integration, you can customise what you are going to pass to Lambda in the payload that you don't need to parse the body, but when you are using Lambda Proxy integration in API Gateway, API Gateway will proxy everything to Lambda in payload like this:

{
    "message": "Hello me!",
    "input": {
        "path": "/test/hello",
        "headers": {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, lzma, sdch, br",
            "Accept-Language": "en-US,en;q=0.8",
            "CloudFront-Forwarded-Proto": "https",
            "CloudFront-Is-Desktop-Viewer": "true",
            "CloudFront-Is-Mobile-Viewer": "false",
            "CloudFront-Is-SmartTV-Viewer": "false",
            "CloudFront-Is-Tablet-Viewer": "false",
            "CloudFront-Viewer-Country": "US",
            "Host": "wt6mne2s9k.execute-api.us-west-2.amazonaws.com",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
            "Via": "1.1 fb7cca60f0ecd82ce07790c9c5eef16c.cloudfront.net (CloudFront)",
            "X-Amz-Cf-Id": "nBsWBOrSHMgnaROZJK1wGCZ9PcRcSpq_oSXZNQwQ10OTZL4cimZo3g==",
            "X-Forwarded-For": "192.168.100.1, 192.168.1.1",
            "X-Forwarded-Port": "443",
            "X-Forwarded-Proto": "https"
        },
        "pathParameters": {"proxy": "hello"},
        "requestContext": {
            "accountId": "123456789012",
            "resourceId": "us4z18",
            "stage": "test",
            "requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9",
            "identity": {
                "cognitoIdentityPoolId": "",
                "accountId": "",
                "cognitoIdentityId": "",
                "caller": "",
                "apiKey": "",
                "sourceIp": "192.168.100.1",
                "cognitoAuthenticationType": "",
                "cognitoAuthenticationProvider": "",
                "userArn": "",
                "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
                "user": ""
            },
            "resourcePath": "/{proxy+}",
            "httpMethod": "GET",
            "apiId": "wt6mne2s9k"
        },
        "resource": "/{proxy+}",
        "httpMethod": "GET",
        "queryStringParameters": {"name": "me"},
        "stageVariables": {"stageVarName": "stageVarValue"},
        "body": "{\"foo\":\"bar\"}",
        "isBase64Encoded": false
    }
}

For the example you are referencing, it is not getting the body from the original request. It is constructing the response body back to API Gateway. It should be in this format:

{
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "...",
    "isBase64Encoded": false
}
Answer from Ka Hou Ieong on Stack Overflow
🌐
Amazon Web Services
docs.aws.amazon.com › aws lambda › developer guide › building lambda functions with python › define lambda function handler in python
Define Lambda function handler in Python - AWS Lambda
January 31, 2026 - The Lambda function handler is the method in your Python code that processes events. When your function is invoked, Lambda runs the handler method.
Top answer
1 of 6
130

There are two different Lambda integrations you can configure in API Gateway:

  1. Lambda non-proxy integration (docs), also called Lambda custom integration
  2. Lambda proxy integration (docs)

For Lambda non-proxy integration, you can customise what you are going to pass to Lambda in the payload that you don't need to parse the body, but when you are using Lambda Proxy integration in API Gateway, API Gateway will proxy everything to Lambda in payload like this:

{
    "message": "Hello me!",
    "input": {
        "path": "/test/hello",
        "headers": {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, lzma, sdch, br",
            "Accept-Language": "en-US,en;q=0.8",
            "CloudFront-Forwarded-Proto": "https",
            "CloudFront-Is-Desktop-Viewer": "true",
            "CloudFront-Is-Mobile-Viewer": "false",
            "CloudFront-Is-SmartTV-Viewer": "false",
            "CloudFront-Is-Tablet-Viewer": "false",
            "CloudFront-Viewer-Country": "US",
            "Host": "wt6mne2s9k.execute-api.us-west-2.amazonaws.com",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
            "Via": "1.1 fb7cca60f0ecd82ce07790c9c5eef16c.cloudfront.net (CloudFront)",
            "X-Amz-Cf-Id": "nBsWBOrSHMgnaROZJK1wGCZ9PcRcSpq_oSXZNQwQ10OTZL4cimZo3g==",
            "X-Forwarded-For": "192.168.100.1, 192.168.1.1",
            "X-Forwarded-Port": "443",
            "X-Forwarded-Proto": "https"
        },
        "pathParameters": {"proxy": "hello"},
        "requestContext": {
            "accountId": "123456789012",
            "resourceId": "us4z18",
            "stage": "test",
            "requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9",
            "identity": {
                "cognitoIdentityPoolId": "",
                "accountId": "",
                "cognitoIdentityId": "",
                "caller": "",
                "apiKey": "",
                "sourceIp": "192.168.100.1",
                "cognitoAuthenticationType": "",
                "cognitoAuthenticationProvider": "",
                "userArn": "",
                "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
                "user": ""
            },
            "resourcePath": "/{proxy+}",
            "httpMethod": "GET",
            "apiId": "wt6mne2s9k"
        },
        "resource": "/{proxy+}",
        "httpMethod": "GET",
        "queryStringParameters": {"name": "me"},
        "stageVariables": {"stageVarName": "stageVarValue"},
        "body": "{\"foo\":\"bar\"}",
        "isBase64Encoded": false
    }
}

For the example you are referencing, it is not getting the body from the original request. It is constructing the response body back to API Gateway. It should be in this format:

{
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "...",
    "isBase64Encoded": false
}
2 of 6
100

I think there are a few things to understand when working with API Gateway integration with Lambda.

Lambda Integration vs Lambda Proxy Integration

There used to be only Lambda Integration which requires mapping templates. I suppose this is why still seeing many examples using it.

  • How to pass a querystring or route parameter to AWS Lambda from Amazon API Gateway

As of September 2017, you no longer have to configure mappings to access the request body.

  • Serverless Architecture on AWS

Lambda Proxy Integration, If you enable it, API Gateway will map every request to JSON and pass it to Lambda as the event object. In the Lambda function you’ll be able to retrieve query string parameters, headers, stage variables, path parameters, request context, and the body from it.

Without enabling Lambda Proxy Integration, you’ll have to create a mapping template in the Integration Request section of API Gateway and decide how to map the HTTP request to JSON yourself. And you’d likely have to create an Integration Response mapping if you were to pass information back to the client.

Before Lambda Proxy Integration was added, users were forced to map requests and responses manually, which was a source of consternation, especially with more complex mappings.

Words need to navigate the thinking. To get the terminologies straight.

  • Lambda Proxy Integration = Pass through
    Simply pass the HTTP request through to lambda.

  • Lambda Integration = Template transformation
    Go through a transformation process using the Apache Velocity template and you need to write the template by yourself.

body is escaped string, not JSON

Using Lambda Proxy Integration, the body in the event of lambda is a string escaped with backslash, not a JSON.

"body": "{\"foo\":\"bar\"}" 

If tested in a JSON formatter.

Parse error on line 1:
{\"foo\":\"bar\"}
-^
Expecting 'STRING', '}', got 'undefined'

The document below is about response but it should apply to request.

  • I received a "malformed Lambda proxy response" error or a 502 status code with Amazon API Gateway. How do I resolve this?

The body field, if you are returning JSON, must be converted to a string or it will cause further problems with the response. You can use JSON.stringify to handle this in Node.js functions; other runtimes will require different solutions, but the concept is the same.

For JavaScript to access it as a JSON object, need to convert it back into JSON object with json.parse in JapaScript, json.dumps in Python.

  • How To Work with JSON in JavaScript

Strings are useful for transporting but you’ll want to be able to convert them back to a JSON object on the client and/or the server side.

The AWS documentation shows what to do.

if (event.body !== null && event.body !== undefined) {
    let body = JSON.parse(event.body)
    if (body.time) 
        time = body.time;
}
...
var response = {
    statusCode: responseCode,
    headers: {
        "x-custom-header" : "my custom header value"
    },
    body: JSON.stringify(responseBody)
};
console.log("response: " + JSON.stringify(response))
callback(null, response);
Discussions

Request Body missing in Lambda and no idea why
How are you triggering this function? Function URL, API Gateway? If API Gateway, is it a proxy or non-proxy integration? More on reddit.com
🌐 r/aws
12
4
February 10, 2024
Nodejs lambda function unable to parse event.body getting errors
I followed the below post and created a lambda function with lambda proxy api gateway but i'm getting server error when ever i post data for event.body json.parse(event.body); is throwing errors ... More on repost.aws
🌐 repost.aws
1
0
September 27, 2019
Event.body LAMBDA_PROXY mapping - Serverless Framework - Serverless Forums
Hi there, I gather from https://serverless.com/framework/docs/providers/aws/events/apigateway/ I need to do something like a: if (event.body) { event = JSON.parse(event.body) } In my code? I am quite familiar with doing something like a sls invoke -f dosomething -p events/notification.json ... More on forum.serverless.com
🌐 forum.serverless.com
0
January 26, 2017
Lambda event.body object from browser POST response is of different type - Serverless Framework - Serverless Forums
When I console.log(event.body) and perform a POST request by submitting a classical HTML form from the browser through AWS API Gateway->Lambda I get something like a query string: event.body = first_name=Blabla&last_name=OOOOO&email=oooo@aaa.com when running the same function via serverless-offline ... More on forum.serverless.com
🌐 forum.serverless.com
0
February 10, 2017
Top answer
1 of 2
10

Lambda is standalone service that doesn't need to be integrated with API Gateway. queryStringParameters, body, body mapping templates, all of this is specific not to Lambda, but to Lambda - API Gateway integration.

If you are using Lambda with other services then the data is usually passed directly via event object and there is not much of a reason to pass it in some other way.

For example, you can subscribe Lambda function to S3 bucket and use it to programatically process events such as file being uploaded to your bucket. In this case, information such as bucket name, object key, object data, metadata, ... will be passed directly via event object.

And, when using Lambda with API Gateway, why would you want to use body mapping templates to pass data to your Lambda function directly via event object? Because you can reuse that function much easier for other purposes (if viable in your scenario), because your Lambda function will have much simpler interface, instead of one that is tight to API Gateway integration.

For example, you can have a function that performs some calculations on passed in numbers which you can call via API Gateway as well as to call it directly from your application. It will be much easier to work with such function if it expects event.x and event.y instead of some event.queryStringParameter.x which might make zero sense outside of API Gateway.

2 of 2
9

Building on insights from Matus, I now can better answer the rest of the questions from above:

  • "What is an example of how to pass data "directly" on the event object in a Lambda function like in case #3?"

When setting up API Gateway with Lambda to send-through specific pieces of data you need to use a Mapping Template which gets setup in AWS API Gateway.

That mapping template itself is written in the Velocity Template Language (VTL) from the Apache Foundation. Ex for attaching only the "hello" data so it is accessible as const data = event.hello; // world, ex:

    { 
      "hello": $input.params('$hello')
    }

Note: VTL is very powerful, the above is not a realistic example of usage but smallest amount of VTL just to communicate the idea, see here and here for more detail

Jumping through the interface to set that Mapping Template is a bit of an ordeal for a starter example so here's illustrated steps:

Warning: Be sure to double-check what is actually displayed in the editor, since there might occasionally occur some funky/unexpected behavior on the Mapping Template when you change the dropdown. Sometimes you also reach unrecoverable issues involving the mapping template, it's best when starting out to go ahead and delete the method and restart from API Gateway.

  • "For a simple Node script, case 2 appears to have the "overhead" of parsing event body from stringified JSON so that's an understandable downside, but why or when would Case 3 be a more desirable approach?

It all depends on how your Lambda is receiving its data.

The key insight from Matus is that this is all ultimately an implementation detail. Lambdas in this contrived example (ie set up a REST API via AWS Gateway, send a GET/POST to that API and have lambda do something with the data) can retrieve data 3 ways:

(1) URL parameters const data = event.queryStringParameters.hello; // world

(2) request body const data = event.body.hello; // world (see note below)

(3) directly on the event object const data = event.hello; // world

Note on 2: This requires selecting (a) Lambda Proxy Integration instead of using a mapping template and in your code you'll need JSON.parse the event body before accessing the data, see this answer for further details

All this depends on what it is being fed from API Gateway. In this specific example, I'm talking about doing a REST request to pass data on an API Gateway endpoint that then is processed by Lambda-- but lots of other services/triggers can send data to a Lambda script for analysis.

Other helpful resources:

  • https://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/

  • Getting json body in aws Lambda via API gateway

  • Could not parse request body into json: Unexpected character (\'-\' (code 45)) AWS Lambda + API + Postman

  • https://medium.com/@lakshmanLD/lambda-proxy-vs-lambda-integration-in-aws-api-gateway-3a9397af0e6d

  • https://github.com/valgaze/documentdb-fun

Ex. a toy Lambda function echos back whatever is POST'd:

let client = null; // Data outside function handler (ex a DB connection or an incrementing value) can change within the handler code below and persist between Lamba invocations so long as the container is still "warm", see more for details: https://docs.aws.amazon.com/lambda/latest/dg/running-lambda-code.html

exports.handler = async (event, context) => {
    let data = {};

    // Lambda Proxy Integration
    if (event && event.body) {
        try {
            data = JSON.parse(event.body);
        } catch(e) { 
            return {
                statusCode: 400,
                body: JSON.stringify({message: 'There was an error parsing the JSON data posted to this endpoint', error:e})
            }
        }
    }

    try {

        // Echo back the data or perform transformations, pass on to another service, etc
        const response = {
            statusCode: 200,
            body: JSON.stringify({message: 'Data submitted', data})
        };

        return response;

    } catch(e) {
        // Report errors related with connection, auth, DB write, etc
        return {
          statusCode: 409,
          body: JSON.stringify({message: 'There was some type of catastrophic error', error:e})
      }
   }
};
🌐
Reddit
reddit.com › r/aws › request body missing in lambda and no idea why
r/aws on Reddit: Request Body missing in Lambda and no idea why
February 10, 2024 -

Hello,

lambda function code is

"import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

import { PutItemCommand } from "@aws-sdk/client-dynamodb";

const dynamodb = new DynamoDBClient({});

const handler = async (event) => {

try {

// Check if event.body is undefined

if (!event.body) {

throw new Error("Request body is missing");

}

....."

this error is now always thrown. I tried this curl request:

curl -X POST -H "Content-Type: application/json" -d "{\"value\": 123}" APILINK

and also have an app trying a call so I don't think both of the calls are wrong as I also checked them with chatgpt.

ty for any help

🌐
Readthedocs
aws-lambda-for-python-developers.readthedocs.io › en › latest › 02_event_and_context
Chapter 2: What is the event & context? - AWS Lambda for Python Developers
Each event will have a different format and carry different payloads, but the pattern is always the same. The lambda function is triggered, it will inspect its event and perform a logic on the event before returning and terminating.
🌐
GitHub
github.com › tschoffelen › lambda-sample-events
GitHub - tschoffelen/lambda-sample-events: ⚡️ A library of example event payloads for AWS Lambda.
This is a library of sample event payloads for AWS Lambda.
Starred by 67 users
Forked by 6 users
Languages   JavaScript
🌐
AWS re:Post
repost.aws › questions › QUL9smr9TtRJG5dDA3R3PjFA › nodejs-lambda-function-unable-to-parse-event-body-getting-errors
Nodejs lambda function unable to parse event.body getting errors | AWS re:Post
September 27, 2019 - 'use strict'; console.log('Loading hello world function'); exports.handler = async (event) => { let name = "you"; let city = 'World'; let time = 'day'; let day = ''; let responseCode = 200; console.log("request: " + JSON.stringify(event)); if (event.queryStringParameters && event.queryStringParameters.name) { console.log("Received name: " + event.queryStringParameters.name); name = event.queryStringParameters.name; } if (event.queryStringParameters && event.queryStringParameters.city) { console.log("Received city: " + event.queryStringParameters.city); city = event.queryStringParameters.city;
Find elsewhere
🌐
Serverless Forums
forum.serverless.com › serverless framework
Event.body LAMBDA_PROXY mapping - Serverless Framework - Serverless Forums
January 26, 2017 - Hi there, I gather from https://serverless.com/framework/docs/providers/aws/events/apigateway/ I need to do something like a: if (event.body) { event = JSON.parse(event.body) } In my code? I am quite familiar with doing something like a sls invoke -f dosomething -p events/notification.json locally, so I am little bit bewildered by this kludge needed for the event object when using the “http” event.
🌐
Amazon Web Services
docs.aws.amazon.com › aws lambda › developer guide › invoking lambda with events from other aws services › invoking a lambda function using an amazon api gateway endpoint
Invoking a Lambda function using an Amazon API Gateway endpoint - AWS Lambda
For a custom integration, the event is the body of the request. For a proxy integration, the event has a defined structure. For an example of a proxy event from an API Gateway REST API, see Input format of a Lambda function for proxy integration in the API Gateway Developer Guide.
🌐
Learning-Ocean
learning-ocean.com › tutorials › aws › mastering-aws-lambda-event-objects
Aws - AWS Lambda: Event Objects - Learning-Ocean
S3 Event Processing: Convert uploaded videos to multiple formats for streaming purposes. Scheduling Tasks: Automatically start and stop EC2 instances at specific times to save costs. Dynamic Responses: Process user inputs and return customized results directly via the Function URL. # List all EC2 instances and stop those with low utilization import boto3 def lambda_handler(event, context): ec2 = boto3.client('ec2') instances = ec2.describe_instances(Filters=[{"Name": "instance-state-name", "Values": ["running"]}]) for reservation in instances['Reservations']: for instance in reservation['Instances']: # Add logic to check utilization metrics and stop instances pass
🌐
Serverless Forums
forum.serverless.com › serverless framework
Lambda event.body object from browser POST response is of different type - Serverless Framework - Serverless Forums
February 10, 2017 - When I console.log(event.body) and perform a POST request by submitting a classical HTML form from the browser through AWS API Gateway->Lambda I get something like a query string: event.body = first_name=Blabla&last_na…
🌐
Netlify
answers.netlify.com › support
Baffled by Binary event.body in Lambda Function - Support - Netlify Support Forums
June 21, 2020 - Site: https://gallant-stonebraker-875750.netlify.app/ I am completely baffled on why a Binary PUT is working fine locally, but is not working once deployed. I am trying to take a PUT to my lambda and turn around and upl…
Top answer
1 of 2
4

This is one of the differences between Lambda Proxy Integration and the Lambda Non-Proxy Integration.

With the first one you always get body as a string in event body.event.

Whereas with the Non-Proxy integration you can specify how does the request from client map to event using Mapping Tempaltes.

2 of 2
0

Lambda itself has no awareness of or constraints¹ on what event will contain -- that is entirely at the discretion of the caller that invoked the Lambda function.

When AWS services invoke Lambda functions they often use a common standard format that includes everything in the array event.Records (which, in some cases, like S3 event notifications and Lambda@Edge triggers, will always contain exactly one member). Other use cases include an entirely different structure.

What to expect is determined by the service, so you'll want to review the documentation for the service that is invoking the lambda function. The service should be consistent, overall, though there may be attributes that appear or disappear depending in the specifics of the trigger.

Using AWS Lambda with Other Services in the AWS Lambda Developer Guide discusses this in more detail, and provides links to some service-specific documentation for some of the AWS services that interoperate with Lambda.

And, of course, a Lambda function doesn't necessarily need to be invoked by another AWS service at all -- you can invoke a Lambda function from your own code, or even from inside another Lambda function (even recursively), or from the Lambda console, and in these cases the payload would be whatever you send.


¹ no constraints is not strictly true, since the Lambda API expects the input payload to be JSON, but this isn't relevant in the sense being discussed, here. The Node.js runtime environment deserializes the JSON into event transparently before calling your handler. The "event object" (as it is commonly called) is indeed typically an object. Exactly where/how/whether this is constrained (as opposed to, say, event being an array or scalar -- which I have never encountered but seems possible) is also beyond the intended scope of my choice of the phrase "no constraints."

🌐
AWS Cloud Community
docs.powertools.aws.dev › lambda › python › latest › utilities › data_classes
Event Source Data Classes - Powertools for AWS Lambda (Python)
The example handles Bedrock Agent event with BedrockAgentEvent to parse the incoming event. The function logs the action group and input text, then returns a structured response compatible with Bedrock Agent's expected format, including a mock response body.
Top answer
1 of 3
30

Event represents the event or trigger that caused the invocation of the lambda. For example, if your lambda is triggered by an upload to S3 this will contain information about the object being uploaded for example:

    {
      "Records": [
        {
          "eventVersion": "2.0",
          "eventTime": "1970-01-01T00:00:00.000Z",
          "requestParameters": {
            "sourceIPAddress": "127.0.0.1"
          },
          "s3": {
            "configurationId": "testConfigRule",
            "object": {
              "eTag": "0123456789abcdef0123456789abcdef",
              "sequencer": "0A1B2C3D4E5F678901",
              "key": "HappyFace.jpg",
              "size": 1024
            },
            "bucket": {
              "arn": bucketarn,
              "name": "sourcebucket",
              "ownerIdentity": {
                "principalId": "EXAMPLE"
              }
            },
            "s3SchemaVersion": "1.0"
          },
          "responseElements": {
            "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
            "x-amz-request-id": "EXAMPLE123456789"
          },
          "awsRegion": "us-east-1",
          "eventName": "ObjectCreated:Put",
          "userIdentity": {
            "principalId": "EXAMPLE"
          },
          "eventSource": "aws:s3"
        }
      ]
    }

Here is detailed information about events, with an example.

Context Provides information about the invocation, function, and execution environment of your lambda. So you can use this to check the memory allocation or to retrieve the number of milliseconds left before the execution times out. Here is detailed documentation about context, with an example.

2 of 3
3

From the docs

When Lambda runs your function, it passes a context object to the handler. This object provides methods and properties that provide information about the invocation, function, and execution environment.

Event (and the args) are described here.

To put it more simply, think of event as an input to a regular function. Context is an extra input supplied by AWS to give you a variety of meta context and such.

🌐
AWS re:Post
repost.aws › questions › QUEBvpghYWQceJYn7U7Hd_cw › why-is-json-parse-event-body-returning-null-despite-form-input
Why is JSON.parse(event.body) returning null despite form input? | AWS re:Post
July 21, 2020 - After some research, I learned that the reason the event instance would come back as empty, is because I had failed to check the lambda proxy integration option at the "Integration Requests" page on the API's Resource/Method page.
🌐
Reddit
reddit.com › r/aws › how do i find the event body? js
r/aws on Reddit: How do I find the event body? JS
May 11, 2024 -

I’m using JavaScript and I need to find the event body to parse through the file name from the request body?

So the code looks like this:

async function process(requestBody) { const fileName requestBody…. }

I’m learning AWS as I go and in this tutorial I need to parse through a certain section of the event body but I’m not entirely sure where to find it?

Hopefully this made sense cause I’m at a loss.