I figured out why my javascript wasn't working. The geoprocessor I set up doesn't include the tool name at the end of the URL, which is why it was invalid. Here's what that line should be: gp = new Geoprocessor("https://URL/servername/rest/services/Web_Map_GP_Services/ZipTest/GPServer/ZipTest"); To run from Rest API, I first had to go through the "Upload" task to create an item ID: [![enter image description here][1]][1] [![enter image description here][2]][2] Next, I had to go to the task and submit a job with the URL generated with that item ID: [![enter image description here][3]][3] This resulted in success! [1]: https://i.sstatic.net/XfXxl.jpg [2]: https://i.sstatic.net/d14Ny.jpg [3]: https://i.sstatic.net/Bl7CY.jpg