---
title: "Create a hook"
method: POST
path: "/v1/orgs/{org_id}/hooks"
tags: ["Hooks"]
---

# Create a hook

`POST /v1/orgs/{org_id}/hooks`

## Request

- Base URL: `https://api.arcade.dev`
- URL: `https://api.arcade.dev/v1/orgs/{org_id}/hooks`
- Auth: API key in header `Authorization`

Creates a new hook configuration

## Path parameters

- `org_id` string, required

## Request body

- SchemasCreateHookRequest
  - `failure_mode` 'fail_closed' | 'fail_open', required
  - `hook_point` 'tool.access' | 'tool.pre' | 'tool.post', required
  - `name` string, required
  - `phase` 'before' | 'after', required
  - `plugin_id` string, required
  - `priority` integer
  - `status` 'inactive' | 'active'
  - `timeout_ms` integer

## Response `201`

Created

- SchemasHookResponse
  - `cache_enabled` boolean
  - `cache_ttl_ms` integer
  - `created_at` string
  - `failure_mode` 'fail_closed' | 'fail_open'
  - `hook_point` string
  - `id` string
  - `name` string
  - `phase` 'before' | 'after'
  - `plugin_id` string
  - `priority` integer
  - `status` 'inactive' | 'active'
  - `timeout_ms` integer
  - `updated_at` string
  - `version` integer

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `409`: Conflict
- `500`: Internal Server Error

## Changes

- **2026-10-16** `4c694686f453`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/arcadeai/apis/arcade-api/changes/v1/orgs/:org_id/hooks/post.md)

---

[API](https://skmtc.dev/arcadeai/apis/arcade-api.md) - [All operations](https://skmtc.dev/arcadeai/apis/arcade-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arcadeai/apis/arcade-api/revisions/f487ce74dc56?raw)
