|
| 1 | +# Trigger A Workflow Via An API Call |
| 2 | + |
| 3 | +We can set up a GitHub Actions workflow to run when triggered by an API call. |
| 4 | +This is done with the [`workflow_dispatch` |
| 5 | +event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch). |
| 6 | + |
| 7 | +First, we add `workflow_dispatch` to our workflow as a triggering event: |
| 8 | + |
| 9 | +```yaml |
| 10 | +on: |
| 11 | + workflow_dispatch: |
| 12 | +``` |
| 13 | +
|
| 14 | +Second, we create a fine-grained personal GitHub access token that has permissions |
| 15 | +for dispatching to GitHub Actions. More details on that in the [GitHub |
| 16 | +docs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token). |
| 17 | +
|
| 18 | +Then, we can use `cURL` or some other tool for issuing an HTTP POST request to |
| 19 | +[the workflow dispatch API |
| 20 | +endpoint](https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event). The `cURL` request will look something like this: |
| 21 | + |
| 22 | +```bash |
| 23 | +curl -L \ |
| 24 | + -X POST \ |
| 25 | + -H "Accept: application/vnd.github+json" \ |
| 26 | + -H "Authorization: Bearer <YOUR-TOKEN>"\ |
| 27 | + -H "X-GitHub-Api-Version: 2022-11-28" \ |
| 28 | + https://api.github.com/repos/OWNER/REPO/actions/workflows/WORKFLOW_ID/dispatches \ |
| 29 | + -d '{"ref":"topic-branch","inputs":{"name":"Mona the Octocat","home":"San Francisco, CA"}}' |
| 30 | +``` |
| 31 | + |
| 32 | +Note: we need to alter that URL with the `OWNER` and `REPO` that the workflow |
| 33 | +lives in as well as the `WORKFLOW_ID` which can be the name of the workflow |
| 34 | +file (e.g. `my-dispatchable-workflow.yml`). |
| 35 | + |
| 36 | +This event also means that we can manually trigger the workflow from the |
| 37 | +GitHub Actions UI for that workflow. |
0 commit comments