# Run a script
**POST /_scripts/painless/_execute**
**All methods and paths for this operation:**
GET
/_scripts/painless/_execute
POST
/_scripts/painless/_execute
Runs a script and returns a result.
Use this API to build and test scripts, such as when defining a script for a runtime field.
This API requires very few dependencies and is especially useful if you don't have permissions to write documents on a cluster.
The API uses several _contexts_, which control how scripts are run, what variables are available at runtime, and what the return type is.
Each context requires a script, but additional parameters depend on the context you're using for that script.
## Servers
- http://api.example.com: http://api.example.com ()
## Authentication methods
- Api key auth
- Basic auth
- Bearer auth
## Parameters
### Body: application/json (object)
- **context** (string)
The context that the script should run in.
NOTE: Result ordering in the field contexts is not guaranteed.
Supported values include:
- `painless_test`: The default context if no other context is specified.
- `filter`: Treats scripts as if they were run inside a script query.
- `score`: Treats scripts as if they were run inside a `script_score` function in a `function_score` query.
- `boolean_field`: The context for boolean fields. The script returns a `true` or `false` response.
- `date_field`: The context for date fields. `emit` takes a long value and the script returns a sorted list of dates.
- `double_field`: The context for double numeric fields. The script returns a sorted list of double values.
- `geo_point_field`: The context for geo-point fields. `emit` takes two double parameters, the latitude and longitude values, and the script returns an object in GeoJSON format containing the coordinates for the geo point.
- `ip_field`: The context for `ip` fields. The script returns a sorted list of IP addresses.
- `keyword_field`: The context for keyword fields. The script returns a sorted list of string values.
- `long_field`: The context for long numeric fields. The script returns a sorted list of long values.
- `composite_field`: The context for composite runtime fields. The script returns a map of values.
- **context_setup** (object)
Additional parameters for the `context`.
NOTE: This parameter is required for all contexts except `painless_test`, which is the default if no value is provided for `context`.
- **script** (object)
The Painless script to run.
## Responses
### 200
#### Body: application/json (object)
- **result** (object)
[Powered by Bump.sh](https://bump.sh)