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

# Update Action

> Update an existing action in an integration

<Info>
  **Using our API via a dedicated deployment?** Just replace `api.langdock.com` with your deployment's base URL: **`<deployment-url>/api/public`**
</Info>

Updates an existing action in an integration. This replaces the action configuration with the provided values.

## Required Scopes

This endpoint requires the `INTEGRATION_API` scope.

## Path Parameters

| Parameter       | Type   | Required | Description                  |
| --------------- | ------ | -------- | ---------------------------- |
| `integrationId` | string | Yes      | UUID of the integration      |
| `actionId`      | string | Yes      | UUID of the action to update |

## Request Body

| Parameter     | Type   | Required | Description                               |
| ------------- | ------ | -------- | ----------------------------------------- |
| `name`        | string | Yes      | Action name (max 100 characters)          |
| `description` | string | No       | Action description (max 1,000 characters) |
| `code`        | string | No       | JavaScript code to execute                |
| `inputFields` | array  | No       | Input fields for the action               |

See [Create Action](/en/developer/integrations-api/create-action) for the full input field schema.

## Example

```javascript theme={null}
const axios = require("axios");

async function updateAction(integrationId, actionId) {
  const response = await axios.put(
    `https://api.langdock.com/integrations/v1/${integrationId}/actions/${actionId}`,
    {
      name: "Get User Data v2",
      description: "Updated action with additional fields",
      code: `
        const response = await fetch('https://api.example.com/v2/users/' + inputs.userId);
        return await response.json();
      `,
      inputFields: [
        {
          label: "User ID",
          type: "TEXT",
          required: true
        },
        {
          label: "Format",
          type: "SELECT",
          options: [
            { label: "JSON", value: "json" },
            { label: "XML", value: "xml" }
          ],
          required: false
        }
      ]
    },
    {
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
      }
    }
  );

  console.log("Updated action:", response.data.action);
}

updateAction("550e8400-e29b-41d4-a716-446655440000", "660e8400-e29b-41d4-a716-446655440001");
```

## Response Format

### Success Response (200 OK)

```typescript theme={null}
{
  action: {
    id: string;
    name: string;
    slug: string;
    description: string;
    code: string | null;
    order: number;
    inputFields: Array<{
      slug: string;
      label: string;
      type: string;
      description: string;
      placeholder: string | null;
      required: boolean;
      order: number;
      options: Array<{label: string, value: string}> | null;
      allowMultiSelect: boolean | null;
      contextActionId: string | null;
    }>;
  };
}
```

## Error Handling

| Status Code | Description                          |
| ----------- | ------------------------------------ |
| 400         | Invalid request body or IDs          |
| 401         | Invalid or missing API key           |
| 403         | No access to this integration        |
| 404         | Integration or action not found      |
| 409         | Action with this name already exists |
| 429         | Rate limit exceeded                  |

<Info>
  Langdock intentionally blocks browser-origin requests to protect your API key and ensure your applications remain secure. For more information, please see our guide on [API Key Best Practices](/en/admin/ai-adoption-and-rollout/best-practices/api-key-best-practices).
</Info>
