Scripts

Pre-request scripts run before a request is sent. Use them to set variables, add headers, generate dynamic values, or prepare authentication tokens.

Scripts use the same Postman-compatible pm API as post-response scripts. They run in the official Postman Sandbox runtime.

Examples

Set an environment variable

pm.environment.set('timestamp', new Date().toISOString())

The variable is available in the request URL, headers, and body as {{timestamp}}, and in post-response scripts via pm.environment.get('timestamp').

Add a header

pm.request.headers.add({
  key: 'X-Request-Id',
  value: 'req-' + Date.now()
})

Set variables for post-response scripts

Variables set in a pre-request script persist into the post-response script for the same request.

pm.globals.set('requestStartTime', Date.now())

Then in the post-response script:

pm.test("Request completed quickly", () => {
  const start = pm.globals.get('requestStartTime')
  const duration = Date.now() - start
  pm.expect(duration).to.be.below(2000)
})

pm.request

The pm.request object represents the request that is about to be sent. Changes to headers and method are applied to the actual request.

Property Type Description
pm.request.method string HTTP method (GET, POST, etc.)
pm.request.url Url Request URL
pm.request.headers HeaderList Request headers
pm.request.body RequestBody Request body

Modifying headers

// Add a header
pm.request.headers.add({ key: 'X-Custom', value: 'value' })

// Remove a header
pm.request.headers.remove('X-Custom')

Modifying the method

pm.request.method = 'POST'

Adding Scripts to OpenAPI Documents

Add pre-request scripts to your OpenAPI description using the x-pre-request extension. Scripts can be set at the operation level, the document level, or both. When both are present, the document-level script runs first.

Operation level

openapi: 3.1.0
info:
  title: Example
  version: 1.0
paths:
  '/users':
    get:
      summary: Get all users
      x-pre-request: |-
        pm.environment.set('timestamp', new Date().toISOString())

Document level

openapi: 3.1.0
info:
  title: Example
  version: 1.0
x-pre-request: |-
  pm.request.headers.add({
    key: 'X-Request-Id',
    value: 'req-' + Date.now()
  })

See the OpenAPI extensions reference for more details.