# Supplying Test Runs

Test runs (columns) can be created using several endpoints:

- `POST /projects/:p/scripts` — create a script in a project, including one or more test runs  
- `POST /projects/:p/folders/:f/scripts` — create a script in a folder, including one or more test runs  
- `POST /scripts/:s/runs` — add a single test run to a script

Where multiple test runs are being supplied (the create new script endpoints), the `runs` field will be a list of the run objects.  
Where a single test run is being supplied (the add a single test run endpoint), the payload is a single test run object.

**Test Run object** (fields):

- `id` (optional)  
- `headers` (object) (optional)  
- `completed` (boolean or `"auto"`) (optional)  
- `results` (object) (optional)
- `assignee` (string) (optional) — assign the run to an existing team member by **email address**

Notes:

- The ID can only be supplied when **creating scripts**. Once a script exists, new IDs will be created for you by Testpad.  
- `assignee` takes the email address of an existing team member. It sets the assignee only and does **not** send a delegation/invite email; an unknown email is rejected. (Assigning to anyone/guest, aliases, and notifications may be offered later.)  
- `headers` are optional everywhere. A run can have none, only headers, or headers and results. Any header field values that aren't defined for the script are ignored.  
- Built-in header fields are read-only (`_run`, `_createdDate`, `_createdTime`).  
- Any header fields that do not receive a value will be left empty.  
- Any header field values supplied in the test run that do not exist in the script will be ignored.


