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

# Get incoming webhook

GET https://ca.compute.islo.dev/webhooks/incoming/{webhook_id}

Get one incoming webhook by ID.

Reference: https://docs.islo.dev/api-reference/webhooks/get-incoming-webhook

## Request

### Path parameters

- `webhook_id` (string, required) — Incoming webhook ID

## Response

### 200

Incoming webhook

- `auth` (IncomingWebhookAuthResponse, required)
- `created_at` (string, required)
- `id` (string, required)
- `idempotency` (IdempotencyConfig, required)
- `name` (string, required)
- `receiver_url` (string, required)
- `rules` (list of IncomingWebhookRule, required)
- `status` (enum, required)
  - Allowed values: `active`, `disabled`
- `target` (IncomingWebhookTarget, required)

## Errors

### 401 Unauthorized Error

Unauthorized

- `code` (enum, required)
  - Allowed values: `AUTH_REQUIRED`, `INVALID_REQUEST`, `NOT_FOUND`, `VALIDATION_ERROR`, `SANDBOX_NOT_FOUND`, `SANDBOX_ALREADY_EXISTS`, `SANDBOX_INVALID_STATE`, `SANDBOX_PROVISIONING_FAILED`, `RESOURCE_NOT_FOUND`, `FILE_NOT_FOUND`, `COMMAND_NOT_FOUND`, `EXEC_FAILED`, `FILE_OPERATION_ERROR`, `RESOURCE_UNAVAILABLE`, `ACCESS_DENIED`, `CACHE_CONFLICT`, `BILLING_NOT_ALLOWED`, `TENANT_SUSPENDED`, `RATE_LIMITED`, `TIMEOUT`, `GONE`, `BAD_GATEWAY`, `INTERNAL_ERROR`
- `message` (string, required)
- `available` (long, optional, nullable)
- `limit` (long, optional, nullable)
- `request_id` (string, optional, nullable)
- `requested` (long, optional, nullable)
- `resource` (string, optional, nullable) — Optional capacity fields populated for `InsufficientResources` errors so clients (including peer agents) can recover the typed payload across HTTP boundaries instead of collapsing it to an opaque message.

### 404 Not Found Error

Incoming webhook not found

- `code` (enum, required)
  - Allowed values: `AUTH_REQUIRED`, `INVALID_REQUEST`, `NOT_FOUND`, `VALIDATION_ERROR`, `SANDBOX_NOT_FOUND`, `SANDBOX_ALREADY_EXISTS`, `SANDBOX_INVALID_STATE`, `SANDBOX_PROVISIONING_FAILED`, `RESOURCE_NOT_FOUND`, `FILE_NOT_FOUND`, `COMMAND_NOT_FOUND`, `EXEC_FAILED`, `FILE_OPERATION_ERROR`, `RESOURCE_UNAVAILABLE`, `ACCESS_DENIED`, `CACHE_CONFLICT`, `BILLING_NOT_ALLOWED`, `TENANT_SUSPENDED`, `RATE_LIMITED`, `TIMEOUT`, `GONE`, `BAD_GATEWAY`, `INTERNAL_ERROR`
- `message` (string, required)
- `available` (long, optional, nullable)
- `limit` (long, optional, nullable)
- `request_id` (string, optional, nullable)
- `requested` (long, optional, nullable)
- `resource` (string, optional, nullable) — Optional capacity fields populated for `InsufficientResources` errors so clients (including peer agents) can recover the typed payload across HTTP boundaries instead of collapsing it to an opaque message.

## Types

### IncomingWebhookAuthResponse

- IncomingWebhookAuthResponse0
- IncomingWebhookAuthResponse1
- IncomingWebhookAuthResponse2
- IncomingWebhookAuthResponse3
- IncomingWebhookAuthResponse4
- IncomingWebhookAuthResponse5
- IncomingWebhookAuthResponse6
- IncomingWebhookAuthResponse7
- IncomingWebhookAuthResponse8
- IncomingWebhookAuthResponse9

### IdempotencyConfig

- IdempotencyConfig0
- IdempotencyConfig1
- IdempotencyConfig2
- IdempotencyConfig3

### IncomingWebhookRule

- `actions` (list of IncomingWebhookAction, required)
- `when` (IncomingWebhookCondition, optional, nullable)

### IncomingWebhookTarget

- IncomingWebhookTarget0
- IncomingWebhookTarget1

### IncomingWebhookAuthResponse0

- `auth_type` (enum, required)
  - Allowed values: `none`

### IncomingWebhookAuthResponse1

- `auth_type` (enum, required)
  - Allowed values: `all`
- `verifiers` (list of AuthVerifierResponse, required)

### IncomingWebhookAuthResponse2

- `auth_type` (enum, required)
  - Allowed values: `any`
- `verifiers` (list of AuthVerifierResponse, required)

### IncomingWebhookAuthResponse3

- `algorithm` (enum, required)
  - Allowed values: `sha256`
- `auth_type` (enum, required)
  - Allowed values: `hmac`
- `encoding` (enum, required)
  - Allowed values: `hex`
- `secret_redacted` (boolean, required)
- `secret_ref` (IncomingWebhookSecretRef, required)
- `signature` (ValueSource, required)
- `signed_payload` (SignedPayload, required)
- `prefix` (string, optional, nullable)

### IncomingWebhookAuthResponse4

- `auth_type` (enum, required)
  - Allowed values: `header_equals`
- `header` (string, required)
- `value_redacted` (boolean, required)

### IncomingWebhookAuthResponse5

- `auth_type` (enum, required)
  - Allowed values: `query_equals`
- `query` (string, required)
- `value_redacted` (boolean, required)

### IncomingWebhookAuthResponse6

- `auth_type` (enum, required)
  - Allowed values: `basic`
- `secret_redacted` (boolean, required)

### IncomingWebhookAuthResponse7

- `auth_type` (enum, required)
  - Allowed values: `bearer_static`
- `secret_redacted` (boolean, required)

### IncomingWebhookAuthResponse8

- `auth_type` (enum, required)
  - Allowed values: `jwt`
- `jwks_url` (string, required)
- `audience` (string, optional, nullable)
- `issuer` (string, optional, nullable)

### IncomingWebhookAuthResponse9

- `auth_type` (enum, required)
  - Allowed values: `ip_allowlist`
- `cidrs` (list of string, required)

### IdempotencyConfig0

- `name` (string, required)
- `source` (enum, required)
  - Allowed values: `header`

### IdempotencyConfig1

- `header` (string, required)
- `param` (string, required)
- `source` (enum, required)
  - Allowed values: `header_param`

### IdempotencyConfig2

- `path` (string, required)
- `source` (enum, required)
  - Allowed values: `json_path`

### IdempotencyConfig3

- `source` (enum, required)
  - Allowed values: `body_sha256`

### IncomingWebhookAction

- IncomingWebhookAction0
- IncomingWebhookAction1
- IncomingWebhookAction2
- IncomingWebhookAction3
- IncomingWebhookAction4
- IncomingWebhookAction5

### IncomingWebhookCondition

- IncomingWebhookCondition0
- JsonPathCondition: JsonPathCondition

### IncomingWebhookTarget0

- `sandbox_name` (string, required)
- `target_type` (enum, required)
  - Allowed values: `fixed_sandbox_name`

### IncomingWebhookTarget1

- `source` (ValueSource, required)
- `target_type` (enum, required)
  - Allowed values: `sandbox_name_from_event`
- `allowed_names` (list of string, optional, nullable)
- `allowed_pattern` (string, optional, nullable)
- `required_prefix` (string, optional, nullable)

### AuthVerifierResponse

- AuthVerifierResponse0
- AuthVerifierResponse1
- AuthVerifierResponse2
- AuthVerifierResponse3
- AuthVerifierResponse4
- AuthVerifierResponse5
- AuthVerifierResponse6

### IncomingWebhookSecretRef

- `name` (string, required)

### ValueSource

- ValueSource0
- ValueSource1
- ValueSource2
- ValueSource3
- ValueSource4
- ValueSource5
- ValueSource6

### SignedPayload

- SignedPayload0
- SignedPayload1

### IncomingWebhookAction0

- `action_type` (enum, required)
  - Allowed values: `ensure_sandbox`
- `template` (IncomingWebhookSandboxTemplate, required)

### IncomingWebhookAction1

- `action_type` (enum, required)
  - Allowed values: `resume_sandbox`

### IncomingWebhookAction2

- `action_type` (enum, required)
  - Allowed values: `pause_sandbox`

### IncomingWebhookAction3

- `action_type` (enum, required)
  - Allowed values: `delete_sandbox`

### IncomingWebhookAction4

- `action_type` (enum, required)
  - Allowed values: `deliver_to_port`
- `port` (integer, required)
- `auto_resume` (enum, optional)
  - Allowed values: `never`, `on_activity`
- `path` (string, optional, nullable)
- `payload` (PayloadMapping, optional, nullable)

### IncomingWebhookAction5

- `action_type` (enum, required)
  - Allowed values: `trigger_job`
- `job_name` (string, required)
- `params` (map from string to JobParamMapping, optional, nullable)
- `region` (string, optional, nullable)
- `version_id` (string, optional, nullable)

### IncomingWebhookCondition0

- `equals` (any, required)
- `json_path` (string, required)

### JsonPathCondition

- JsonPathCondition0
- JsonPathCondition1
- JsonPathCondition2
- JsonPathCondition3
- JsonPathCondition4
- JsonPathCondition5
- JsonPathCondition6
- JsonPathCondition7
- JsonPathCondition8
- JsonPathCondition9
- JsonPathCondition10
- JsonPathCondition11
- JsonPathCondition12

### AuthVerifierResponse0

- `algorithm` (enum, required)
  - Allowed values: `sha256`
- `encoding` (enum, required)
  - Allowed values: `hex`
- `secret_redacted` (boolean, required)
- `secret_ref` (IncomingWebhookSecretRef, required)
- `signature` (ValueSource, required)
- `signed_payload` (SignedPayload, required)
- `type` (enum, required)
  - Allowed values: `hmac`
- `prefix` (string, optional, nullable)

### AuthVerifierResponse1

- `header` (string, required)
- `type` (enum, required)
  - Allowed values: `header_equals`
- `value_redacted` (boolean, required)

### AuthVerifierResponse2

- `query` (string, required)
- `type` (enum, required)
  - Allowed values: `query_equals`
- `value_redacted` (boolean, required)

### AuthVerifierResponse3

- `secret_redacted` (boolean, required)
- `type` (enum, required)
  - Allowed values: `basic`

### AuthVerifierResponse4

- `secret_redacted` (boolean, required)
- `type` (enum, required)
  - Allowed values: `bearer_static`

### AuthVerifierResponse5

- `jwks_url` (string, required)
- `type` (enum, required)
  - Allowed values: `jwt`
- `audience` (string, optional, nullable)
- `issuer` (string, optional, nullable)

### AuthVerifierResponse6

- `cidrs` (list of string, required)
- `type` (enum, required)
  - Allowed values: `ip_allowlist`

### ValueSource0

- `name` (string, required)
- `source` (enum, required)
  - Allowed values: `header`

### ValueSource1

- `header` (string, required)
- `param` (string, required)
- `source` (enum, required)
  - Allowed values: `header_param`

### ValueSource2

- `name` (string, required)
- `source` (enum, required)
  - Allowed values: `query`

### ValueSource3

- `path` (string, required)
- `source` (enum, required)
  - Allowed values: `json_path`

### ValueSource4

- `source` (enum, required)
  - Allowed values: `raw_body`

### ValueSource5

- `source` (enum, required)
  - Allowed values: `method`

### ValueSource6

- `source` (enum, required)
  - Allowed values: `path`

### SignedPayload0

- `type` (enum, required)
  - Allowed values: `raw_body`

### SignedPayload1

- `parts` (list of SignedPart, required)
- `type` (enum, required)
  - Allowed values: `template`

### IncomingWebhookSandboxTemplate

- `disk_gb` (integer, required)
- `image` (string, required)
- `memory_mb` (integer, required)
- `vcpus` (integer, required)
- `cache_key` (string, optional, nullable)
- `env` (map from string to string, optional, nullable)
- `gateway_profile` (string, optional, nullable)
- `init` (SandboxInit, optional, nullable) — Intent-based sandbox init selection.
- `init_capabilities` (list of enum, optional, nullable)
  - Allowed values: `core-gateway-proxy`, `ssh`, `docker`
- `lifecycle` (IncomingWebhookSandboxLifecycle, optional, nullable)
- `setup_scripts` (list of IncomingWebhookSetupScript, optional, nullable)
- `snapshot_name` (string, optional, nullable)
- `sources` (list of IncomingWebhookGitSource, optional, nullable)
- `workdir` (string, optional, nullable)

### PayloadMapping

- PayloadMapping0

### JobParamMapping

- JobParamMapping0
- JobParamMapping1

### JsonPathCondition0

- `conditions` (list of IncomingWebhookCondition, required)
- `op` (enum, required)
  - Allowed values: `all`

### JsonPathCondition1

- `conditions` (list of IncomingWebhookCondition, required)
- `op` (enum, required)
  - Allowed values: `any`

### JsonPathCondition2

- `condition` (IncomingWebhookCondition, required)
- `op` (enum, required)
  - Allowed values: `not`

### JsonPathCondition3

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `equals`
- `value` (any, required)

### JsonPathCondition4

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `not_equals`
- `value` (any, required)

### JsonPathCondition5

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `exists`

### JsonPathCondition6

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `not_exists`

### JsonPathCondition7

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `contains`
- `value` (any, required)

### JsonPathCondition8

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `matches`
- `pattern` (string, required)

### JsonPathCondition9

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `greater_than`
- `value` (double, required)

### JsonPathCondition10

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `greater_than_or_equal`
- `value` (double, required)

### JsonPathCondition11

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `less_than`
- `value` (double, required)

### JsonPathCondition12

- `json_path` (string, required)
- `op` (enum, required)
  - Allowed values: `less_than_or_equal`
- `value` (double, required)

### SignedPart

- SignedPart0
- SignedPart1

### SandboxInit

Intent-based sandbox init selection.

- SandboxInit0
- SandboxInit1
- SandboxInit2

### IncomingWebhookSandboxLifecycle

- `auto_resume` (enum, optional)
  - Allowed values: `never`, `on_activity`
- `delete_after` (long, optional, nullable)
- `pause_after` (long, optional, nullable)
- `pause_after_idle` (long, optional, nullable)

### IncomingWebhookSetupScript

- `script` (string, required)
- `name` (string, optional)

### IncomingWebhookGitSource

- `repo_url` (string, required)
- `branch` (string, optional, nullable)
- `target_path` (string, optional, nullable)

### PayloadMapping0

- `type` (enum, required)
  - Allowed values: `original`

### JobParamMapping0

- `source` (ValueSource, required)

### JobParamMapping1

- `parts` (list of MappingPart, required)

### SignedPart0

- `source` (ValueSource, required)
- `type` (enum, required)
  - Allowed values: `source`

### SignedPart1

- `type` (enum, required)
  - Allowed values: `literal`
- `value` (string, required)

### SandboxInit0

- `type` (enum, required)
  - Allowed values: `minimal`

### SandboxInit1

- `type` (enum, required)
  - Allowed values: `full`

### SandboxInit2

- `capabilities` (list of enum, required)
  - Allowed values: `ssh`, `docker`
- `type` (enum, required)
  - Allowed values: `custom`
- `await_ready` (boolean, optional) — Block until capabilities are fully ready (e.g. sshd accepts connections, dockerd responds to API calls). Defaults to false.

### MappingPart

- MappingPart0
- MappingPart1

### MappingPart0

- `type` (enum, required)
  - Allowed values: `literal`
- `value` (string, required)

### MappingPart1

- `source` (ValueSource, required)
- `type` (enum, required)
  - Allowed values: `source`

## Examples

**Response**

```json
{
  "auth": {
    "auth_type": "none"
  },
  "created_at": "string",
  "id": "string",
  "idempotency": {
    "name": "string",
    "source": "header"
  },
  "name": "string",
  "receiver_url": "string",
  "rules": [
    {
      "actions": [
        {
          "action_type": "ensure_sandbox",
          "template": {
            "cache_key": "string",
            "disk_gb": 1,
            "env": {},
            "gateway_profile": "string",
            "image": "string",
            "init": null,
            "init_capabilities": [
              "core-gateway-proxy"
            ],
            "lifecycle": null,
            "memory_mb": 1,
            "setup_scripts": [
              {
                "name": "string",
                "script": "string"
              }
            ],
            "snapshot_name": "string",
            "sources": [
              {
                "branch": "string",
                "repo_url": "string",
                "target_path": "string"
              }
            ],
            "vcpus": 1,
            "workdir": "string"
          }
        }
      ],
      "when": null
    }
  ],
  "status": "active",
  "target": {
    "sandbox_name": "string",
    "target_type": "fixed_sandbox_name"
  }
}
```

**SDK Code**

```python
import requests

url = "https://ca.compute.islo.dev/webhooks/incoming/webhook_id"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://ca.compute.islo.dev/webhooks/incoming/webhook_id';
const options = {method: 'GET'};

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

```go
package main

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

func main() {

	url := "https://ca.compute.islo.dev/webhooks/incoming/webhook_id"

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

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

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

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

}
```

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

url = URI("https://ca.compute.islo.dev/webhooks/incoming/webhook_id")

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

request = Net::HTTP::Get.new(url)

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

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

HttpResponse<String> response = Unirest.get("https://ca.compute.islo.dev/webhooks/incoming/webhook_id")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://ca.compute.islo.dev/webhooks/incoming/webhook_id');

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

```csharp
using RestSharp;

var client = new RestClient("https://ca.compute.islo.dev/webhooks/incoming/webhook_id");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://ca.compute.islo.dev/webhooks/incoming/webhook_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

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()
```