> ## Documentation Index
> Fetch the complete documentation index at: https://docs.telzino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List and Create Guardrails

> List or create organization-level guardrails

## Path Parameters

<ParamField path="organization_id" type="string" required>
  Organization ID (UUID).
</ParamField>

## List Guardrails

Returns all guardrails in the organization, oldest first.

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.telzino.com/v1/organizations/987fcdeb-51a2-3bc4-d567-890123456789/guardrails \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "11111111-1111-1111-1111-111111111111",
        "organization_id": "987fcdeb-51a2-3bc4-d567-890123456789",
        "name": "No PII",
        "description": "Never reveal or confirm a caller's full account number, SSN, or payment card details.",
        "enabled": true,
        "created_at": "2026-07-15T12:00:00Z",
        "updated_at": "2026-07-15T12:00:00Z"
      }
    ]
  }
  ```
</ResponseExample>

## Create a Guardrail

Send a JSON body to the same endpoint.

<ParamField body="name" type="string" required>
  Guardrail name, 1-100 characters. Names must be unique within the organization.
</ParamField>

<ParamField body="description" type="string | null">
  Optional rule text, up to 1000 characters. Spell out exactly what the agent
  must (or must not) do.
</ParamField>

<ParamField body="enabled" type="boolean" default="true">
  Whether the guardrail is injected into agent prompts.
</ParamField>

<Info>
  An organization can have at most **5 guardrails**. Creating a sixth returns
  `409 limit_reached`.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.telzino.com/v1/organizations/987fcdeb-51a2-3bc4-d567-890123456789/guardrails \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "No PII",
      "description": "Never reveal or confirm a caller'\''s full account number, SSN, or payment card details."
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "data": {
      "id": "11111111-1111-1111-1111-111111111111",
      "organization_id": "987fcdeb-51a2-3bc4-d567-890123456789",
      "name": "No PII",
      "description": "Never reveal or confirm a caller's full account number, SSN, or payment card details.",
      "enabled": true,
      "created_at": "2026-07-15T12:00:00Z",
      "updated_at": "2026-07-15T12:00:00Z"
    }
  }
  ```

  ```json 400 theme={null}
  // Schema validation failed (name empty/too long, description too long,
  // or an unknown field was sent).
  {
    "error": "Invalid request data",
    "details": [
      {
        "code": "too_big",
        "maximum": 100,
        "path": ["name"],
        "message": "String must contain at most 100 character(s)"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  // Body was not valid JSON, or the name was only whitespace.
  {
    "error": "invalid_request",
    "error_description": "Name is required"
  }
  ```

  ```json 409 theme={null}
  {
    "error": "conflict",
    "error_description": "A guardrail with that name already exists"
  }
  ```

  ```json 409 theme={null}
  {
    "error": "limit_reached",
    "error_description": "You can create at most 5 guardrails per organization"
  }
  ```
</ResponseExample>
