---
title: "Trigger Jenkins via Webhook REST API"
canonical: "https://support.appfire.com/space/JENK/150897153/Trigger%20Jenkins%20via%20Webhook%20REST%20API"
format: markdown
---
> Macro (aura-html)

> ℹ️ Currently, you can only remotely trigger builds that are connected to a pull request.

## API

Use Webhook to Jenkins to trigger Jenkins via using its REST API via the following endpoint:

```java
/rest/jenkins/latest/projects/{BITBUCKET_PROJECT_SLUG}/repos/{BITBUCKET_REPOSITORY_SLUG}/triggerJenkins?pr_id={PULL_REQUEST_ID}
```

We've created a sample python script that updates the settings for you. Refer to the [Python example](https://appfire.atlassian.net/wiki/spaces/JENK/pages/150897153/Trigger+Jenkins+via+Webhook+REST+API#Python-Example).

The REST API requires the following inputs

|  |  |
| --- | --- |
| **BITBUCKET_PROJECT_SLUG** | The Bitbucket project string id |
| **BITBUCKET_REPOSITORY_SLUG** | The Bitbucket repository string id |
| **PULL_REQUEST_ID** | The ID of the pull request |

## Python Example

```python
#!/usr/bin/python
import httplib
import sys
import json
import argparse
from urlparse import urlparse
from base64 import b64encode

parser = argparse.ArgumentParser(description='Sample script to trigger jenkins via plugin api.')
parser.add_argument('--bitbucket-url', type=str, help='Url for Bitbucket instance.',
                    default='http://localhost:7990/bitbucket', dest='bitbucket_url')
                    
parser.add_argument('--username', type=str, help='Username for user with access to repository',
                    default='admin')
parser.add_argument('--password', type=str, help='Password for user with access to repository',
                    default='admin')
                    
parser.add_argument('--project', type=str, help='Project key where repository is located',
                    default='PROJECT_1')
parser.add_argument('--repository', type=str, help='Repository key for the instance',
                    default='rep_1')

parser.add_argument('--pull-request-id', type=str, help='Pull request ID.',
                    default='1', dest='pull_request_id')
args = parser.parse_args()

bb_url = args.bitbucket_url
username = args.username
password = args.password
project_key = args.project
repository_slug = args.repository
pull_request_id = args.pull_request_id

end_point = "/rest/jenkins/latest/projects/{}/repos/{}/triggerJenkins?pr_id={}".format(project_key, repository_slug, pull_request_id)

url_obj = urlparse(bb_url)

headers = {
    'authorization': "Basic " + b64encode(username + ':' + password),
    'Content-Type': 'application/json'
}

connection = httplib.HTTPConnection(url_obj.hostname, url_obj.port)

try:
    connection.request("POST", url_obj.path + end_point, headers=headers)
    r1 = connection.getresponse()

    print r1.status, r1.reason, r1.getheaders()

    data1 = r1.read()
    print data1
finally:
    connection.close()
```