---
updatedAt: 2026-04-20T21:16:33.000Z
agentTools:
  projectIndex: https://swoogo.readme.io/llms.txt
---

# Get One Webhook

Retrieves a single webhook configuration by its ID, including the target URL, trigger event type, HTTP method, headers, and associated webhook group.

# OpenAPI definition

````json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Swoogo API",
    "version": "1.0.0",
    "summary": "REST API for the Swoogo event management platform",
    "description": "The Swoogo API provides programmatic access to manage events, registrants, sessions,\nspeakers, sponsors, and related resources on the Swoogo event management platform.\n\n## Authentication\n\nThe API uses OAuth 2.0 with the **client credentials** grant type.\n\n1. **Get your credentials** — Log in to Swoogo and go to **My Profile > API Credentials**\n   to find your consumer key and secret.\n2. **Encode credentials** — URL-encode the key and secret (RFC 1738), concatenate them\n   with a colon (`key:secret`), then Base64-encode the result.\n3. **Request a token** — `POST /oauth2/token` with your encoded credentials in the\n   `Authorization: Basic {encoded}` header and `grant_type=client_credentials` in the body.\n4. **Use the token** — Include `Authorization: Bearer {access_token}` on all subsequent requests.\n\n> Tokens expire after **30 minutes**. Request a new token when you receive a `401` response.\n\n## Rate Limiting\n\nAPI requests are rate-limited to **2,000 requests per 10-minute window** per API credential.\nList endpoints cost **10 credits** per call; all other endpoints cost **1 credit**.\nRate limit status is returned in response headers:\n\n| Header | Description |\n|--------|-------------|\n| `X-Rate-Limit-Limit` | Maximum requests allowed in the current window |\n| `X-Rate-Limit-Remaining` | Requests remaining in the current window |\n| `X-Rate-Limit-Reset` | Seconds until the window resets |\n\nWhen the limit is exceeded, the API returns `429 Too Many Requests`.\n\n## Pagination\n\nAll list endpoints return paginated results in this envelope:\n\n```json\n{\n  \"items\": [...],\n  \"_links\": { \"self\": { \"href\": \"...\" }, \"first\": { \"href\": \"...\" }, \"last\": { \"href\": \"...\" } },\n  \"_meta\": { \"totalCount\": 95, \"pageCount\": 5, \"currentPage\": 1, \"perPage\": 20 }\n}\n```\n\nControl pagination with these query parameters:\n\n| Parameter | Default | Max | Description |\n|-----------|---------|-----|-------------|\n| `page` | 1 | — | Page number (1-indexed) |\n| `per-page` | 20 | 1000 | Items per page. Capped at **200** when using `expand`. |\n\nPagination metadata is also returned in `X-Pagination-*` response headers.\n\n## Filtering and Sorting\n\nUse the `search` parameter to filter results. Combine multiple conditions with `&`.\n\n**Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`, `*beginswith*`, `*endswith*`, `*in*`\n\n**Examples:**\n- `search=registration_status=confirmed` — exact match\n- `search=created_at>=2024-01-01` — date range\n- `search=last_name=*beginswith*Sm` — starts with \"Sm\"\n- `search=status=*in*confirmed|attended` — matches any value (pipe-separated)\n- `search=id>100&registration_status=confirmed` — multiple conditions (AND by default)\n\nSet `searchCondition=or` to match **any** condition instead of all.\n\nUse `sort` to order results. Prefix with `-` for descending: `sort=-created_at`.\n\n## Field Selection and Expansion\n\nUse `fields` to request only the fields you need: `fields=id,email,first_name,last_name`.\nWhen omitted, a default subset of fields is returned.\n\nUse `expand` to include related objects in the response: `expand=homeAddress,sessions`.\nEach resource documents its available expand values. Using `expand` caps the page size at **200**.\n\n## Errors\n\nAll errors return a consistent JSON response:\n\n```json\n{\n  \"name\": \"Not Found\",\n  \"message\": \"The requested resource does not exist.\",\n  \"code\": 0,\n  \"status\": 404\n}\n```\n\n| Status | Meaning |\n|--------|---------|\n| `400` | Bad Request — invalid parameters or business rule violation |\n| `401` | Unauthorized — missing or expired bearer token |\n| `403` | Forbidden — valid token but insufficient permissions |\n| `404` | Not Found — resource does not exist or is not accessible |\n| `422` | Unprocessable Entity — validation errors on input fields |\n| `429` | Too Many Requests — rate limit exceeded |\n| `500` | Internal Server Error — unexpected server error |\n\n## Webhooks\n\nSwoogo can send HTTP callbacks when resources are created, updated, or deleted.\nConfigure webhooks via the API or the Swoogo UI. Supported trigger objects:\n`event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`,\n`session_attendance`, `registrant_line_item`.\n\nWebhook payloads can be sent as `json` (application/json) or `post` (form-encoded).\n",
    "termsOfService": "https://www.swoogo.com/terms",
    "contact": {
      "name": "Swoogo Developer Support",
      "url": "https://developer.swoogo.com",
      "email": "dev@swoogo.com"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "https://api.swoogo.com/api/v1",
      "description": "Production API server"
    },
    {
      "url": "https://local.swoogo.com/api/v1",
      "description": "Local API server"
    }
  ],
  "tags": [
    {
      "name": "Webhooks",
      "description": "Configure HTTP callbacks that fire when resources are created, updated, or deleted. Webhooks support JSON and form-encoded payloads, custom headers, and retry logic."
    }
  ],
  "paths": {
    "/webhooks/{webhook_id}": {
      "get": {
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "tags": [
          "Webhooks"
        ],
        "summary": "Get One Webhook",
        "description": "Retrieves a single webhook configuration by its ID, including the target URL, trigger event type, HTTP method, headers, and associated webhook group.",
        "operationId": "getOneWebhook",
        "parameters": [
          {
            "name": "webhook_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            },
            "description": "integer - required - The ID of the webhook you want to get"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string",
              "example": "id,name,url,content_type,post_field_data,use_default_fields,custom_fields,notes,trigger_object,trigger_on_insert,trigger_on_update,trigger_on_delete,all_fields,fields,public_user,admin_user,api_call,any_event,event_ids,created_at,created_by,updated_at,updated_by"
            },
            "description": "string - optional - Comma separated list of fields you want to return"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Webhook",
            "headers": {
              "x-rate-limit-limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "x-rate-limit-remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "x-rate-limit-reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhookFields"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "access_token",
        "description": "OAuth 2.0 bearer token obtained from `POST /oauth2/token`. Tokens expire after 30 minutes. Include in the `Authorization` header as `Bearer {access_token}`."
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error response returned for all 4xx and 5xx status codes.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable error type name (e.g., \"Unauthorized\", \"Forbidden\", \"Not Found\").",
            "example": "Unauthorized"
          },
          "message": {
            "type": "string",
            "description": "Detailed error message explaining what went wrong.",
            "example": "Your request was made with invalid credentials."
          },
          "code": {
            "type": "integer",
            "description": "Application-specific error code. Currently `0` for all standard errors.",
            "example": 0
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code of the error response.",
            "example": 401
          }
        }
      },
      "webhookFields": {
        "type": "object",
        "required": [
          "name",
          "url",
          "trigger_object"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the webhook.",
            "example": "Sample Webhook"
          },
          "url": {
            "type": "string",
            "description": "The URL that data should be sent to.",
            "required": true,
            "example": "https://www.example.com/webhook"
          },
          "trigger_object": {
            "type": "string",
            "enum": [
              "event",
              "contact",
              "registrant",
              "speaker",
              "sponsor",
              "session",
              "session_attendance",
              "registrant_line_item"
            ],
            "description": "The object that will cause the webhook to trigger.",
            "example": "registrant"
          },
          "group_id": {
            "type": "integer",
            "description": "Identifier for the webhook group."
          },
          "headers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "description": "Header key.",
                  "example": "Authorization"
                },
                "value": {
                  "type": "string",
                  "description": "Header value.",
                  "example": "Bearer token"
                }
              }
            },
            "description": "Array of headers for the webhook.",
            "example": [
              {
                "key": "Authentication",
                "value": "Bearer Token"
              }
            ]
          },
          "trigger_on_insert": {
            "type": "boolean",
            "description": "Trigger the webhook when the object is inserted.",
            "example": true
          },
          "trigger_on_update": {
            "type": "boolean",
            "description": "Trigger the webhook when the object is updated.",
            "example": true
          },
          "trigger_on_delete": {
            "type": "boolean",
            "description": "Trigger the webhook when the object is deleted.",
            "example": false
          },
          "public_user": {
            "type": "boolean",
            "description": "Run the webhook for public users.",
            "example": false
          },
          "admin_user": {
            "type": "boolean",
            "description": "Run the webhook for admin users.",
            "example": true
          },
          "api_call": {
            "type": "boolean",
            "description": "Trigger the webhook during an API call.",
            "example": true
          },
          "all_fields": {
            "type": "boolean",
            "description": "Run the webhook for changes to all fields.",
            "example": false
          },
          "any_event": {
            "type": "boolean",
            "description": "Run the webhook for any event.",
            "example": false
          },
          "use_default_fields": {
            "type": "boolean",
            "description": "Use default fields for the webhook.",
            "example": true
          },
          "enabled": {
            "type": "boolean",
            "description": "Indicates whether the webhook is enabled.",
            "example": true
          },
          "event_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "List of event IDs to trigger the webhook.",
            "example": [
              1,
              2,
              3
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom JSON object fields that trigger the webhook."
            },
            "description": "Array of fields to trigger the webhook when changed.",
            "example": [
              "value"
            ]
          },
          "content_type": {
            "type": "string",
            "enum": [
              "json",
              "post"
            ],
            "description": "The content type for webhook payloads.",
            "example": "json"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes for the webhook.",
            "example": "This webhook is for test purposes."
          },
          "post_field_data": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "id",
                "value"
              ]
            },
            "description": "Fields to include in the webhook POST data.",
            "example": [
              "id",
              "value"
            ]
          },
          "custom_fields": {
            "description": "Custom fields for the webhook (type unspecified).",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "description": "Key to identify value on response.",
                  "example": "event_id"
                },
                "type": {
                  "type": "string",
                  "description": "The object that will cause the webhook to trigger.",
                  "enum": [
                    "event",
                    "contact",
                    "registrant",
                    "speaker",
                    "sponsor",
                    "session",
                    "session_attendance",
                    "registrant_line_item"
                  ],
                  "example": "registrant"
                },
                "value": {
                  "type": "string",
                  "description": "Field name.",
                  "example": "id"
                }
              }
            },
            "example": [
              {
                "key": "event_id",
                "type": "registrant",
                "value": "event_id"
              }
            ]
          }
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Authentication failed. The bearer token is missing, expired, or invalid. Obtain a new token via `POST /oauth2/token`.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Unauthorized",
              "message": "Your request was made with invalid credentials.",
              "code": 0,
              "status": 401
            }
          }
        }
      },
      "Forbidden": {
        "description": "The authenticated user does not have permission to access this resource. This can occur if the resource belongs to a different account or the API credentials lack the required scope.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Forbidden",
              "message": "You do not have access to that resource.",
              "code": 0,
              "status": 403
            }
          }
        }
      },
      "NotFound": {
        "description": "The specified resource does not exist or has been deleted. Verify the ID is correct and that the resource belongs to an event your credentials have access to.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Not Found",
              "message": "The requested resource does not exist.",
              "code": 0,
              "status": 404
            }
          }
        }
      },
      "InternalServerError": {
        "description": "An unexpected server error occurred. If this persists, contact Swoogo support with the request details and timestamp.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Internal Server Error",
              "message": "An error occurred while processing your request.",
              "code": 0,
              "status": 500
            }
          }
        }
      }
    },
    "headers": {
      "RateLimitLimit": {
        "schema": {
          "type": "integer"
        },
        "description": "Maximum number of API requests allowed in the current 10-minute window.",
        "example": 2000
      },
      "RateLimitRemaining": {
        "schema": {
          "type": "integer"
        },
        "description": "Number of requests remaining in the current rate limit window.",
        "example": 1367
      },
      "RateLimitReset": {
        "schema": {
          "type": "integer"
        },
        "description": "Number of seconds until the current rate limit window resets.",
        "example": 0
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Authentication",
      "tags": [
        "Authentication"
      ]
    },
    {
      "name": "Core Resources",
      "tags": [
        "Events",
        "Registrants",
        "Sessions",
        "Speakers",
        "Sponsors",
        "Contacts"
      ]
    },
    {
      "name": "Registration",
      "tags": [
        "Registrant Types",
        "Packages",
        "Discount Codes",
        "Transactions",
        "Registrant Sessions",
        "Registrant Session Waitlists",
        "Registrant Groups",
        "Registrant Line Items",
        "Registrant Line Item Audits"
      ]
    },
    {
      "name": "Event Configuration",
      "tags": [
        "Event Fields",
        "Event Questions",
        "Event Websites",
        "Event Badges",
        "Event Folders",
        "Session Fields",
        "Session Locations",
        "Session Attendance",
        "Session Scans",
        "Session Fees",
        "Package Fees",
        "Tracks",
        "Pages"
      ]
    },
    {
      "name": "Speakers & Sponsors",
      "tags": [
        "Speaker Sessions",
        "Sponsor Fields",
        "Sponsor Attendance"
      ]
    },
    {
      "name": "Contacts & Communication",
      "tags": [
        "Contact Fields",
        "Invitation Lists",
        "Data Lists",
        "Data List Items"
      ]
    },
    {
      "name": "Call for Speakers",
      "tags": [
        "Call for Speaker Contacts",
        "Call for Speaker Reviews",
        "Call for Speaker Submissions"
      ]
    },
    {
      "name": "Media",
      "tags": [
        "Images"
      ]
    },
    {
      "name": "Integrations",
      "tags": [
        "Webhooks",
        "Webhook Groups"
      ]
    }
  ]
}
````