***
title: Reference Postman requests in scripts
updated: 2025-11-04T00:00:00.000Z
topictype: reference
slug: docs/tests-and-scripts/write-scripts/postman-sandbox-reference/pm-request
max-toc-depth: 2
----------------
The `pm.request` object provides access to the data for the request from a script running within it. `pm.request` is available in both **Before invoke** and **After response** scripts. For a **Pre-request** script, this is the request that's about to run. For a **Post-response** script, this is the request that has already run.
You can use the `pm.request` object pre-request scripts to alter various parts of the request configuration before it runs.
## pm.request
Use the `pm.request` methods in your scripts to access and manipulate collection requests.
See the Postman [Collection SDK Request reference](https://www.postmanlabs.com/postman-collection/Request.html) for more information.
### pm.request.headers.add(header:Header):function
Adds a header with the given name and value for the current request.
### pm.request.headers.remove(headerName:String):function
Deletes the request header with the given name.
### pm.request.headers.upsert(\{key: headerName:String, value: headerValue:String}):function
Inserts the given header name and value if the header doesn't exist. If it exists, the existing header updates with the given value.
## Examples
Add a header with the given name and value for the current request:
```js
pm.request.headers.add({
key: "client-id",
value: "abcdef"
});
```
## pm.request properties
The `pm.request` object contains the following properties:
* `pm.request.url:Url` - The request's URL.
* `pm.request.headers:HeaderList` - The list of headers for the current request.
* `pm.request.method:String` - The HTTP request's method. {/* HTTP only? */}
* `pm.request.methodPath` - The package, service, and method name in `packageName.serviceName.methodName` format. {/* gRPC only? */}
* `pm.request.body:RequestBody` - The request body's data. This object is immutable and can't be modified from scripts.
* `pm.request.auth` - The request's authentication details. {/* gRPC only? */}
* `pm.request.metadata` - The list of metadata sent with the request. An individual metadata item is an object containing the `key` and `value` properties. For example, `PropertyList<{ key: string, value: string }>`.{/* gRPC only? */}
* `pm.request.messages` - The list of outgoing messages. {/* gRPC only? */} An individual message is a [`PropertyList`](https://www.postmanlabs.com/postman-collection/PropertyList.html) object with the following properties:
* `data` - The contents of the sent message.
* `timestamp` - The time the message was sent, represented as a Date object.
For requests with unary and server streaming methods, `pm.request.messages` contains only one message at index `0`, which can be accessed as `pm.request.messages.idx(0)`.
Request mutation isn't supported in the `pm` object.