> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# Get Subscriptions


GET https://api.shipbob.com/2026-01/webhook

  This endpoint returns a list of webhook subscriptions.


Reference: https://developer.shipbob.com/2026-01/api/webhooks/get-subscriptions

## Authentication

- `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token
- `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens

## Servers

- `https://api.shipbob.com` (https://api.shipbob.com, default)
- `https://sandbox-api.shipbob.com` (https://sandbox-api.shipbob.com)

## Request

### Query parameters

- `RecordsPerPage` (integer, optional) — Number of webhooks returned per page in a paginated response.
- `Cursor` (string, optional) — [Optional] A pagination token used to retrieve the next or previous page of results. Omit to start at the first page.

## Response

### 200

Success

- `items` (list of object, optional, nullable)
  - `created_at` (datetime, optional) — TimeStamp the webhook subscription was created
  - `description` (string, optional, nullable) — Description of the webhook subscription
  - `enabled` (boolean, optional) — Indicates if the webhook subscription is enabled or not
  - `id` (string, optional) — ID of the webhook subscription
  - `topics` (list of enum, optional) — List of event types the webhook will receive notifications for
    - Allowed values: `order.shipped`, `order.delivered`, `order.shipment.delivered`, `order.shipment.exception`, `order.shipment.on_hold`, `order.shipment.cancelled`, `order.shipment.tracking.updated`, `order.shipment.address.updated`, `order.shipment.line_item.added`, `order.shipment.line_item.removed`, `order.shipment.line_item.updated`, `order.shipment.shipping_service.updated`, `return.created`, `return.updated`, `return.completed`, `return.load_shipment.departed`, `return.gaylord.departed`, `return.load_shipment.arrived`, `return.gaylord.arrived`, `return.gaylord.stow_completed`, `billing.charge.created`, `billing.refund.created`, `billing.credit.created`, `wro.box.arrived`, `wro.box.scanned`, `wro.box.stowed`, `wro.completed`, `wro.created`, `wro.updated`
  - `url` (string, optional) — URL subscription events will be posted to
- `next` (string, optional, nullable) — Go to the Next page
- `prev` (string, optional, nullable) — Go to the Previous page

## Errors

### 400 Bad Request Error

Bad Request

- `content_types` (list of string, optional, nullable)
- `declared_type` (string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string or string, optional, nullable)
- `formatters` (list of object, optional, nullable)
- `status_code` (integer, optional, nullable)
- `value` (object, optional, nullable)

### 401 Unauthorized Error

No access right at this time

- `any`

### 403 Forbidden Error

No access

- `any`

## Examples

**Response**

```json
{
  "items": [
    {
      "created_at": "2019-08-24T14:15:22+00:00",
      "description": "string",
      "enabled": true,
      "id": "12345",
      "topics": [
        "order.shipped"
      ],
      "url": "string"
    }
  ],
  "next": "string",
  "prev": "string"
}
```

**SDK Code**

```python default
import requests

url = "https://api.shipbob.com/2026-01/webhook"

querystring = {"RecordsPerPage":"1","Cursor":"string"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript default
const url = 'https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2026-01/webhook?RecordsPerPage=1&Cursor=string")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```