---
title: "Set a take-profit / stop-loss alert on a position"
method: POST
path: "/lp/watch/mark"
tags: ["Liquidity"]
---

# Set a take-profit / stop-loss alert on a position

`POST /lp/watch/mark`

## Request

- Base URL: `https://api.getchord.xyz/v1`
- URL: `https://api.getchord.xyz/v1/lp/watch/mark`
- Auth: none declared

A mark on one open position: when its PnL (percent of the dollars that went in, live value and fees included) crosses the take-profit or the stop-loss, one alert goes to the wallet's inbox and linked Telegram chats with a link to the position, and the mark is removed. It is an alert, not an order: nothing is signed or closed for the wallet. Both values null removes the mark. The wallet is watched from then on; positions are checked every two minutes. A mark with `unit: "native"` waits (it never falls back to dollars) while the chain has no figures in its coin.

## Request body

- object
  - `chain` 5042 | 4663 | 143, required
  - `wallet` string, required: EVM address, hex, case-insensitive.
  - `manager` string, required: EVM address, hex, case-insensitive.
  - `tokenId` string, required: The position's id on its manager, decimal.
  - `tpPct` number, nullable: Above 0, at most 10000.
  - `slPct` number, nullable: Between -100 and 0.
  - `unit` 'usd' | 'native': `native` = count the percent in the chain's own coin: what went in and what the position is worth now, both in ETH / MON (`native` of `GET /lp/position`). The coin moving against the dollar then crosses nothing. Default `usd`.

## Response `200`

- object
  - `chain` integer
  - `wallet` string: EVM address, hex, case-insensitive.
  - `marks` object

## Other responses

- `400`: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).

---

[API](https://skmtc.dev/getchord/apis/chord-api.md) · [All operations](https://skmtc.dev/getchord/apis/chord-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getchord/apis/chord-api/revisions/d3bc4640fea0?raw)
