diff --git a/Octokit.Reactive/Clients/IObservableRepositoryCommitsClients.cs b/Octokit.Reactive/Clients/IObservableRepositoryCommitsClients.cs
index 1766057678..f9b2c95c0e 100644
--- a/Octokit.Reactive/Clients/IObservableRepositoryCommitsClients.cs
+++ b/Octokit.Reactive/Clients/IObservableRepositoryCommitsClients.cs
@@ -11,6 +11,38 @@ namespace Octokit.Reactive
     /// </remarks>
     public interface IObservableRepositoryCommitsClient
     {
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        IObservable<Branch> BranchesWhereHead(long repositoryId, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        IObservable<Branch> BranchesWhereHead(long repositoryId, string sha1, ApiOptions options);
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        IObservable<Branch> BranchesWhereHead(string owner, string name, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        IObservable<Branch> BranchesWhereHead(string owner, string name, string sha1, ApiOptions options);
+
         /// <summary>
         /// Compare two references in a repository
         /// </summary>
@@ -123,5 +155,37 @@ public interface IObservableRepositoryCommitsClient
         /// <param name="repositoryId">The Id of the repository</param>
         /// <param name="reference">The repository reference</param>
         IObservable<string> GetSha1(long repositoryId, string reference);
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        IObservable<CommitPullRequest> PullRequests(string owner, string name, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        IObservable<CommitPullRequest> PullRequests(long repositoryId, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        IObservable<CommitPullRequest> PullRequests(long repositoryId, string sha1, ApiOptions options);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        IObservable<CommitPullRequest> PullRequests(string owner, string name, string sha1, ApiOptions options);
     }
 }
diff --git a/Octokit.Reactive/Clients/ObservableRepositoryCommitsClients.cs b/Octokit.Reactive/Clients/ObservableRepositoryCommitsClients.cs
index 121bf5b4e4..a2f6ad73ff 100644
--- a/Octokit.Reactive/Clients/ObservableRepositoryCommitsClients.cs
+++ b/Octokit.Reactive/Clients/ObservableRepositoryCommitsClients.cs
@@ -23,6 +23,62 @@ public ObservableRepositoryCommitsClient(IGitHubClient client)
             _commit = client.Repository.Commit;
         }
 
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/branches-where-head")]
+        public IObservable<Branch> BranchesWhereHead(long repositoryId, string sha1)
+        {
+            return BranchesWhereHead(repositoryId, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/branches-where-head")]
+        public IObservable<Branch> BranchesWhereHead(long repositoryId, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return _connection.GetAndFlattenAllPages<Branch>(ApiUrls.RepositoryCommitsBranchesWhereHead(repositoryId, sha1), null, options);
+        }
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head")]
+        public IObservable<Branch> BranchesWhereHead(string owner, string name, string sha1)
+        {
+            return BranchesWhereHead(owner, name, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head")]
+        public IObservable<Branch> BranchesWhereHead(string owner, string name, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
+            Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return _connection.GetAndFlattenAllPages<Branch>(ApiUrls.RepositoryCommitsBranchesWhereHead(owner, name, sha1), null, options);
+        }
+
         /// <summary>
         /// Compare two references in a repository
         /// </summary>
@@ -214,5 +270,61 @@ public IObservable<string> GetSha1(long repositoryId, string reference)
 
             return _commit.GetSha1(repositoryId, reference).ToObservable();
         }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/pulls")]
+        public IObservable<CommitPullRequest> PullRequests(long repositoryId, string sha1)
+        {
+            return PullRequests(repositoryId, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/pulls")]
+        public IObservable<CommitPullRequest> PullRequests(long repositoryId, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return _connection.GetAndFlattenAllPages<CommitPullRequest>(ApiUrls.RepositoryCommitsPull(repositoryId, sha1), null, options);
+        }
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/pulls")]
+        public IObservable<CommitPullRequest> PullRequests(string owner, string name, string sha1)
+        {
+            return PullRequests(owner, name, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/pulls")]
+        public IObservable<CommitPullRequest> PullRequests(string owner, string name, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
+            Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return _connection.GetAndFlattenAllPages<CommitPullRequest>(ApiUrls.RepositoryCommitsPull(owner, name, sha1), null, options);
+        }
     }
 }
diff --git a/Octokit.Tests/Clients/RespositoryCommitsClientTests.cs b/Octokit.Tests/Clients/RespositoryCommitsClientTests.cs
index 3e235c4e96..c75fe1d919 100644
--- a/Octokit.Tests/Clients/RespositoryCommitsClientTests.cs
+++ b/Octokit.Tests/Clients/RespositoryCommitsClientTests.cs
@@ -350,5 +350,63 @@ public async Task EnsuresNonNullArguments()
                 await Assert.ThrowsAsync<ArgumentException>(() => client.GetSha1(1, ""));
             }
         }
+
+        public class ThePullRequestsMethod
+        {
+            [Fact]
+            public async Task RequestsCorrectUrl()
+            {
+                var connection = Substitute.For<IApiConnection>();
+                var client = new RepositoryCommitsClient(connection);
+                var options = new ApiOptions
+                {
+                    PageCount = 1,
+                    StartPage = 1,
+                    PageSize = 1
+                };
+
+                await client.PullRequests("fake", "repo", "ref", options);
+
+                connection.Received().GetAll<CommitPullRequest>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/commits/ref/pulls"),
+                    null, options);
+            }
+
+            [Fact]
+            public async Task RequestsCorrectUrlWithRepositoryId()
+            {
+                var connection = Substitute.For<IApiConnection>();
+                var client = new RepositoryCommitsClient(connection);
+                var options = new ApiOptions
+                {
+                    PageCount = 1,
+                    StartPage = 1,
+                    PageSize = 1
+                };
+
+                await client.PullRequests(1, "ref", options);
+
+                connection.Received().GetAll<CommitPullRequest>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/commits/ref/pulls"),
+                    null, options);
+            }
+
+            [Fact]
+            public async Task EnsuresNonNullArguments()
+            {
+                var connection = Substitute.For<IApiConnection>();
+                var client = new RepositoryCommitsClient(connection);
+
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests(null, "name", "ref"));
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests("owner", null, "ref"));
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests("owner", "name", null));
+
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests(1, null));
+
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("", "name", "ref"));
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("owner", "", "ref"));
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("owner", "name", ""));
+
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests(1, ""));
+            }
+        }
     }
 }
diff --git a/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs
index 3aaec54682..841ef7b9e6 100644
--- a/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs
+++ b/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs
@@ -98,5 +98,73 @@ public async Task GetsCorrectUrl()
                     .GetAll(1);
             }
         }
+
+        public class ThePullRequestsMethod
+        {
+            [Fact]
+            public async Task EnsuresNonEmptyArguments()
+            {
+                var client = new ObservableRepositoryCommitsClient(Substitute.For<IGitHubClient>());
+
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("", "name", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("owner", "", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentException>(() => client.PullRequests("owner", "name", "").ToTask());
+            }
+
+            [Fact]
+            public async Task EnsuresNonNullArguments()
+            {
+                var client = new ObservableRepositoryCommitsClient(Substitute.For<IGitHubClient>());
+
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests(null, "name", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests("owner", null, "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.PullRequests("owner", "name", null).ToTask());
+            }
+
+            [Fact]
+            public void GetsCorrectUrl()
+            {
+                var githubClient = Substitute.For<IGitHubClient>();
+                var client = new ObservableRepositoryCommitsClient(githubClient);
+                var options = new ApiOptions();
+
+                client.PullRequests("fake", "repo", "reference", options);
+                githubClient.Received().Repository.Commit.PullRequests("fake", "repo", "reference", options);
+            }
+        }
+
+        public class TheBranchesWhereHeadMethod
+        {
+            [Fact]
+            public async Task EnsuresNonEmptyArguments()
+            {
+                var client = new ObservableRepositoryCommitsClient(Substitute.For<IGitHubClient>());
+
+                await Assert.ThrowsAsync<ArgumentException>(() => client.BranchesWhereHead("", "name", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentException>(() => client.BranchesWhereHead("owner", "", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentException>(() => client.BranchesWhereHead("owner", "name", "").ToTask());
+            }
+
+            [Fact]
+            public async Task EnsuresNonNullArguments()
+            {
+                var client = new ObservableRepositoryCommitsClient(Substitute.For<IGitHubClient>());
+
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.BranchesWhereHead(null, "name", "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.BranchesWhereHead("owner", null, "reference").ToTask());
+                await Assert.ThrowsAsync<ArgumentNullException>(() => client.BranchesWhereHead("owner", "name", null).ToTask());
+            }
+
+            [Fact]
+            public void GetsCorrectUrl()
+            {
+                var githubClient = Substitute.For<IGitHubClient>();
+                var client = new ObservableRepositoryCommitsClient(githubClient);
+                var options = new ApiOptions();
+
+                client.BranchesWhereHead("fake", "repo", "reference", options);
+                githubClient.Received().Repository.Commit.BranchesWhereHead("fake", "repo", "reference", options);
+            }
+        }
     }
 }
diff --git a/Octokit/Clients/IRepositoryCommitsClient.cs b/Octokit/Clients/IRepositoryCommitsClient.cs
index dffa3a8dab..c91f8542b3 100644
--- a/Octokit/Clients/IRepositoryCommitsClient.cs
+++ b/Octokit/Clients/IRepositoryCommitsClient.cs
@@ -12,6 +12,38 @@ namespace Octokit
     /// </remarks>
     public interface IRepositoryCommitsClient
     {
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        Task<IReadOnlyList<Branch>> BranchesWhereHead(long repositoryId, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        Task<IReadOnlyList<Branch>> BranchesWhereHead(long repositoryId, string sha1, ApiOptions options);
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        Task<IReadOnlyList<Branch>> BranchesWhereHead(string owner, string name, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        Task<IReadOnlyList<Branch>> BranchesWhereHead(string owner, string name, string sha1, ApiOptions options);
+
         /// <summary>
         /// Compare two references in a repository
         /// </summary>
@@ -124,5 +156,37 @@ public interface IRepositoryCommitsClient
         /// <param name="repositoryId">The Id of the repository</param>
         /// <param name="reference">The repository reference</param>
         Task<string> GetSha1(long repositoryId, string reference);
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        Task<IReadOnlyList<CommitPullRequest>> PullRequests(string owner, string name, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        Task<IReadOnlyList<CommitPullRequest>> PullRequests(long repositoryId, string sha1);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        Task<IReadOnlyList<CommitPullRequest>> PullRequests(long repositoryId, string sha1, ApiOptions options);
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        Task<IReadOnlyList<CommitPullRequest>> PullRequests(string owner, string name, string sha1, ApiOptions options);
     }
 }
diff --git a/Octokit/Clients/RepositoryCommitsClient.cs b/Octokit/Clients/RepositoryCommitsClient.cs
index 8f03bdc7a9..bf32ea4e68 100644
--- a/Octokit/Clients/RepositoryCommitsClient.cs
+++ b/Octokit/Clients/RepositoryCommitsClient.cs
@@ -16,6 +16,62 @@ public RepositoryCommitsClient(IApiConnection apiConnection)
         {
         }
 
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/branches-where-head")]
+        public Task<IReadOnlyList<Branch>> BranchesWhereHead(long repositoryId, string sha1)
+        {
+            return BranchesWhereHead(repositoryId, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/branches-where-head")]
+        public Task<IReadOnlyList<Branch>> BranchesWhereHead(long repositoryId, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return ApiConnection.GetAll<Branch>(ApiUrls.RepositoryCommitsBranchesWhereHead(repositoryId, sha1), null, options);
+        }
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head")]
+        public Task<IReadOnlyList<Branch>> BranchesWhereHead(string owner, string name, string sha1)
+        {
+            return BranchesWhereHead(owner, name, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all branches where the given commit SHA is the HEAD, or latest commit for the branch</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head")]
+        public Task<IReadOnlyList<Branch>> BranchesWhereHead(string owner, string name, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
+            Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return ApiConnection.GetAll<Branch>(ApiUrls.RepositoryCommitsBranchesWhereHead(owner, name, sha1), null, options);
+        }
+
         /// <summary>
         /// Compare two references in a repository
         /// </summary>
@@ -218,5 +274,61 @@ public Task<string> GetSha1(long repositoryId, string reference)
 
             return ApiConnection.Get<string>(ApiUrls.RepositoryCommit(repositoryId, reference), null);
         }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/pulls")]
+        public Task<IReadOnlyList<CommitPullRequest>> PullRequests(long repositoryId, string sha1)
+        {
+            return PullRequests(repositoryId, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repositories/{id}/commits/{commit_sha}/pulls")]
+        public Task<IReadOnlyList<CommitPullRequest>> PullRequests(long repositoryId, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return ApiConnection.GetAll<CommitPullRequest>(ApiUrls.RepositoryCommitsPull(repositoryId, sha1), null, options);
+        }
+
+        /// <summary>
+        /// List pull requests associated with a commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/pulls")]
+        public Task<IReadOnlyList<CommitPullRequest>> PullRequests(string owner, string name, string sha1)
+        {
+            return PullRequests(owner, name, sha1, ApiOptions.None);
+        }
+
+        /// <summary>
+        /// Gets all pull requests for a given commit
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="sha1">Used to find all pull requests containing the provided commit SHA, which can be from any point in the commit history</param>
+        /// /// <param name="options">Options for changing the API response</param>
+        [ManualRoute("GET", "/repos/{owner}/{repo}/commits/{commit_sha}/pulls")]
+        public Task<IReadOnlyList<CommitPullRequest>> PullRequests(string owner, string name, string sha1, ApiOptions options)
+        {
+            Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
+            Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
+            Ensure.ArgumentNotNullOrEmptyString(sha1, nameof(sha1));
+            Ensure.ArgumentNotNull(options, nameof(options));
+
+            return ApiConnection.GetAll<CommitPullRequest>(ApiUrls.RepositoryCommitsPull(owner, name, sha1), null, options);
+        }
     }
 }
diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs
index 9bff25de4b..7a4613b3c1 100644
--- a/Octokit/Helpers/ApiUrls.cs
+++ b/Octokit/Helpers/ApiUrls.cs
@@ -2209,6 +2209,53 @@ public static Uri RepositoryCommits(string owner, string name)
             return "repos/{0}/{1}/commits".FormatUri(owner, name);
         }
 
+        ///repos/{owner}/{repo}/commits/{commit_sha}/
+        /// <summary>
+        /// Returns the <see cref="Uri"/> that lists all branches where the given commit SHA is the HEAD, or latest commit for the branch.
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="reference">The commit reference (SHA)</param>
+        /// <returns></returns>
+        public static Uri RepositoryCommitsBranchesWhereHead(string owner, string name, string reference)
+        {
+            return "repos/{0}/{1}/commits/{2}/branches-where-head".FormatUri(owner, name, reference);
+        }
+
+        /// <summary>
+        /// Returns the <see cref="Uri"/> that lists all branches where the given commit SHA is the HEAD, or latest commit for the branch.
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="reference">The commit reference (SHA)</param>
+        /// <returns></returns>
+        public static Uri RepositoryCommitsBranchesWhereHead(long repositoryId, string reference)
+        {
+            return "repositories/{0}/commits/{1}/branches-where-head".FormatUri(repositoryId, reference);
+        }
+
+        /// <summary>
+        /// Returns the <see cref="Uri"/> that lists the check suites for the specified reference.
+        /// </summary>
+        /// <param name="owner">The owner of the repository</param>
+        /// <param name="name">The name of the repository</param>
+        /// <param name="reference">The commit reference (SHA)</param>
+        /// <returns></returns>
+        public static Uri RepositoryCommitsPull(string owner, string name, string reference)
+        {
+            return "repos/{0}/{1}/commits/{2}/pulls".FormatUri(owner, name, reference);
+        }
+
+        /// <summary>
+        /// Returns the <see cref="Uri"/> that lists the check suites for the specified reference.
+        /// </summary>
+        /// <param name="repositoryId">The Id of the repository</param>
+        /// <param name="reference">The commit reference (SHA)</param>
+        /// <returns></returns>
+        public static Uri RepositoryCommitsPull(long repositoryId, string reference)
+        {
+            return "repositories/{0}/commits/{1}/pulls".FormatUri(repositoryId, reference);
+        }
+
         /// <summary>
         /// Returns the <see cref="Uri"/> for comparing two commits.
         /// </summary>
diff --git a/Octokit/Models/Response/CommitPullRequest.cs b/Octokit/Models/Response/CommitPullRequest.cs
new file mode 100644
index 0000000000..eb011fb4ba
--- /dev/null
+++ b/Octokit/Models/Response/CommitPullRequest.cs
@@ -0,0 +1,199 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using Octokit.Internal;
+
+namespace Octokit
+{
+    [DebuggerDisplay("{DebuggerDisplay,nq}")]
+    public class CommitPullRequest
+    {
+        public CommitPullRequest() { }
+
+        public CommitPullRequest(int number)
+        {
+            Number = number;
+        }
+
+        public CommitPullRequest(long id, string nodeId, string url, string htmlUrl, string diffUrl, string patchUrl, string issueUrl, string statusesUrl, int number, ItemState state, string title, string body, DateTimeOffset createdAt, DateTimeOffset updatedAt, DateTimeOffset? closedAt, DateTimeOffset? mergedAt, GitReference head, GitReference @base, User user, User assignee, IReadOnlyList<User> assignees, bool draft, bool? mergeable, MergeableState? mergeableState, User mergedBy, string mergeCommitSha, Milestone milestone, IReadOnlyList<User> requestedReviewers, IReadOnlyList<Team> requestedTeams, IReadOnlyList<Label> labels)
+        {
+            Id = id;
+            NodeId = nodeId;
+            Url = url;
+            HtmlUrl = htmlUrl;
+            DiffUrl = diffUrl;
+            PatchUrl = patchUrl;
+            IssueUrl = issueUrl;
+            StatusesUrl = statusesUrl;
+            Number = number;
+            State = state;
+            Title = title;
+            Body = body;
+            CreatedAt = createdAt;
+            UpdatedAt = updatedAt;
+            ClosedAt = closedAt;
+            MergedAt = mergedAt;
+            Head = head;
+            Base = @base;
+            User = user;
+            Assignee = assignee;
+            Assignees = assignees;
+            Draft = draft;
+            MergeCommitSha = mergeCommitSha;
+            Milestone = milestone;
+            RequestedReviewers = requestedReviewers;
+            RequestedTeams = requestedTeams;
+            Labels = labels;
+        }
+
+        /// <summary>
+        /// The internal Id for this pull request (not the pull request number)
+        /// </summary>
+        public long Id { get; protected set; }
+
+        /// <summary>
+        /// GraphQL Node Id
+        /// </summary>
+        public string NodeId { get; protected set; }
+
+        /// <summary>
+        /// The URL for this pull request.
+        /// </summary>
+        public string Url { get; protected set; }
+
+        /// <summary>
+        /// The URL for the pull request page.
+        /// </summary>
+        public string HtmlUrl { get; protected set; }
+
+        /// <summary>
+        /// The URL for the pull request's diff (.diff) file.
+        /// </summary>
+        public string DiffUrl { get; protected set; }
+
+        /// <summary>
+        /// The URL for the pull request's patch (.patch) file.
+        /// </summary>
+        public string PatchUrl { get; protected set; }
+
+        /// <summary>
+        /// The URL for the specific pull request issue.
+        /// </summary>
+        public string IssueUrl { get; protected set; }
+
+        /// <summary>
+        /// The URL for the pull request statuses.
+        /// </summary>
+        public string StatusesUrl { get; protected set; }
+
+        /// <summary>
+        /// The pull request number.
+        /// </summary>
+        public int Number { get; protected set; }
+
+        /// <summary>
+        /// Whether the pull request is open or closed. The default is <see cref="ItemState.Open"/>.
+        /// </summary>
+        public StringEnum<ItemState> State { get; protected set; }
+
+        /// <summary>
+        /// Title of the pull request.
+        /// </summary>
+        public string Title { get; protected set; }
+
+        /// <summary>
+        /// The body (content) contained within the pull request.
+        /// </summary>
+        public string Body { get; protected set; }
+
+        /// <summary>
+        /// When the pull request was created.
+        /// </summary>
+        public DateTimeOffset CreatedAt { get; protected set; }
+
+        /// <summary>
+        /// When the pull request was last updated.
+        /// </summary>
+        public DateTimeOffset UpdatedAt { get; protected set; }
+
+        /// <summary>
+        /// When the pull request was closed.
+        /// </summary>
+        public DateTimeOffset? ClosedAt { get; protected set; }
+
+        /// <summary>
+        /// When the pull request was merged.
+        /// </summary>
+        public DateTimeOffset? MergedAt { get; protected set; }
+
+        /// <summary>
+        /// The HEAD reference for the pull request.
+        /// </summary>
+        public GitReference Head { get; protected set; }
+
+        /// <summary>
+        /// The BASE reference for the pull request.
+        /// </summary>
+        public GitReference Base { get; protected set; }
+
+        /// <summary>
+        /// The user who created the pull request.
+        /// </summary>
+        public User User { get; protected set; }
+
+        /// <summary>
+        /// The user who is assigned the pull request.
+        /// </summary>
+        public User Assignee { get; protected set; }
+
+        /// <summary>
+        ///The multiple users this pull request is assigned to.
+        /// </summary>
+        public IReadOnlyList<User> Assignees { get; protected set; }
+
+        /// <summary>
+        /// The milestone, if any, that this pull request is assigned to.
+        /// </summary>
+        public Milestone Milestone { get; protected set; }
+
+        /// <summary>
+        /// Whether or not the pull request is in a draft state, and cannot be merged.
+        /// </summary>
+        public bool Draft { get; protected set; }
+
+        /// <summary>
+        /// Whether or not the pull request has been merged.
+        /// </summary>
+        public bool Merged
+        {
+            get { return MergedAt.HasValue; }
+        }
+
+        /// <summary>
+        /// The value of this field changes depending on the state of the pull request.
+        /// Not Merged - the hash of the test commit used to determine mergeability.
+        /// Merged with merge commit - the hash of said merge commit.
+        /// Merged via squashing - the hash of the squashed commit added to the base branch.
+        /// Merged via rebase - the hash of the commit that the base branch was updated to.
+        /// </summary>
+        public string MergeCommitSha { get; protected set; }
+
+        /// <summary>
+        /// Users requested for review
+        /// </summary>
+        public IReadOnlyList<User> RequestedReviewers { get; protected set; }
+
+        /// <summary>
+        /// Teams requested for review
+        /// </summary>
+        public IReadOnlyList<Team> RequestedTeams { get; protected set; }
+
+        public IReadOnlyList<Label> Labels { get; protected set; }
+
+        internal string DebuggerDisplay
+        {
+            get { return string.Format(CultureInfo.InvariantCulture, "Number: {0} State: {1}", Number, State); }
+        }
+    }
+}