---
title: "Create an external link"
method: POST
path: "/external-link/task/{taskId}"
tags: ["External Links"]
---

# Create an external link

`POST /external-link/task/{taskId}`

## Request

- Base URL: `https://cloud.kaneo.app/api`
- URL: `https://cloud.kaneo.app/api/external-link/task/{taskId}`
- Auth: HTTP bearer

Add a resource link to a task

## Path parameters

- `taskId` string, required

## Request body

- object
  - `url` string, uri, required: An HTTP or HTTPS URL
  - `title` string

## Response `200`

External link created successfully

- CreatedExternalLink
  - `id` string, required
  - `taskId` string, required
  - `integrationId` string, nullable, required
  - `resourceType` string, required: The resource kind: `url` for a manual link, or an integration resource such as `issue` or `pull_request`.
  - `externalId` string, required: The provider's resource identifier, or the URL for a manual link.
  - `url` string, required
  - `title` string, nullable, required
  - `metadata` unknown
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400`: Invalid external link data
- `401`: Unauthorized
- `403`: No permission to update the task
- `404`: Task not found
- `429`: The API key exceeded its rate limit or usage quota. Wait the number of seconds in Retry-After before retrying. The X-RateLimit headers are sent only when the rate limit was hit.

## Changes

- **2026-10-09** `c9984766c765`: 1 info
  - added the non-success response with the status `404`
- **2026-10-08** `c7b8a842601b`: 4 breaking, 4 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `401`
  - removed the media type `text/plain` for the response with the status `403`
  - removed the media type `text/plain` for the response with the status `429`
  - …4 more
- **2026-10-08** `2ed51b8af657`: 3 breaking, 4 info
  - removed the media type `application/json` for the response with the status `400`
  - removed the media type `application/json` for the response with the status `401`
  - removed the media type `application/json` for the response with the status `403`
  - added the media type `text/plain` for the response with the status `400`
  - …3 more
- **2026-10-07** `df1439c724ee`: 3 breaking, 3 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `401`
  - removed the media type `text/plain` for the response with the status `403`
  - added the media type `application/json` for the response with the status `400`
  - …2 more
- **2026-09-25** `a72125e62df3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/external-link/task/:taskId/post.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) - [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usekaneo/apis/kaneo-api/revisions/741a49dfb347?raw)
