## Get user NEPT unlocks **get** `/api/v1/users/{address}/nept/unlocks` Get user NEPT unlocks ### Path Parameters - `address: string` The user account address ### Query Parameters - `with_percent: optional boolean` Calculate and include proportional percentages, where applicable - `with_text: optional boolean` Include text variation fields - `with_value: optional boolean` Calculate and include USD values for amounts, where applicable ### Returns - `data: UserUnlockOverview` - `arrangements: array of object { admin, amounts, begins_at, 4 more }` A list of the user's active unlock arrangements - `admin: object { address, issued_reclaim }` The admin of the unlock, if any - `address: string` The address of the unlock arrangement's admin - `issued_reclaim: boolean` True if the admin his issued a reclaim on the unlock arrangement - `amounts: UserUnlockAmounts` Primary unlock amount and other pre-calculated/derived amounts - `amount: string` The full unlock amount This value is immutable and does not change with regards to expiry/reclamation/lock states. - `claimable: string` The amount currently claimable This takes into account: reclamation, lock state, expiry, and previously claimed. In other words, this is an accurate representation of what the user can currently claim. - `claimed: string` The amount that has already been successfully claimed by the user. - `expired: string` The amount that was claimable but has now expired due to the presence and subsequent passing of `expires_at` - `extra: object { percent, text, value }` - `percent: object { claimable, claimed, expired, 3 more }` Percentages for unlock amounts. These do not factor in the `amount_staked` or `amount_held` values. Will not be null when query param `with_percent` is `true`. - `claimable: string` - `claimed: string` - `expired: string` - `extra: object { text }` - `text: object { claimable, claimed, expired, 2 more }` Human-readable variants of percentages for unlock amounts. Will not be null when query params `with_text` and `with_percent` are `true`. - `claimable: string` - `claimed: string` - `expired: string` - `locked: string` - `reclaimed: string` - `locked: string` - `reclaimed: string` - `text: object { amount, claimable, claimed, 3 more }` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `amount: string` - `claimable: string` - `claimed: string` - `expired: string` - `locked: string` - `reclaimed: string` - `value: object { amount, claimable, claimed, 5 more }` USD values for the corresponding amounts above. Will not be null when query param `with_value` is `true`. ### Note This variant group contains an additional `price` field (set to the number used in value calculation). The embedded text group will contain the text variant if `with_text` was specified as well. - `amount: string` - `claimable: string` - `claimed: string` - `expired: string` - `extra: object { text }` - `text: object { amount, claimable, claimed, 4 more }` Human-readable variants of USD values. Will not be null when query params `with_text` and `with_value` are `true`. - `amount: string` - `claimable: string` - `claimed: string` - `expired: string` - `locked: string` - `price: string` Text representation of price - `reclaimed: string` - `locked: string` - `price: string` Price used in value calculations - `reclaimed: string` - `locked: string` The total amount of NEPT currently awaiting unlock **NOTE:** any reclaimed unlocks are excluded from the total, regardless of how much the user had claimed prior to reclamation. - `reclaimed: string` The amount that has been reclaimed from the unlock arrangement admin - `begins_at: string` The time at which the unlock begins - `expires_at: string` The time at which the unlock expires, if any - `extra: object { text }` - `text: object { begins_at, expires_at, last_claimed_at }` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `begins_at: string` - `expires_at: string` - `last_claimed_at: string` - `last_claimed_at: string` The time at which the unlock was last claimed, if any - `schedule: UserUnlockSchedule` The schedule of the unlock - `UserUnlockScheduleLinear = object { duration, ends_at, extra, kind }` - `duration: number` The duration of the unlock in seconds - `ends_at: string` The time at which the unlock has/was/would've completed. This is identical to `begins_at + duration`. This timestamp will remain valid even if the unlock has been reclaimed. Therefore, it should not be used as a validity check. - `extra: object { text }` - `text: object { duration, ends_at }` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `duration: string` - `ends_at: string` - `kind: "linear"` - `"linear"` - `UserUnlockScheduleLumpSum = object { kind }` - `kind: "lump_sum"` - `"lump_sum"` - `extra: object { text }` - `text: object { last_claimed_at }` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `last_claimed_at: string` - `last_claimed_at: string` The time at which the most recent unlock claim occurred, if any - `totals: UserUnlockAmounts` Contains pre-calculated total amounts for all unlock agreements - `error: unknown` Error data. Guaranteed `null` for successful response. - `status: number` HTTP status. Successful responses are guaranteed to be < `400`. Conversely, error responses are guaranteed to be >= `400`. - `status_text: string` HTTP status text ### Example ```http curl https://api-v2.nept.finance/api/v1/users/$ADDRESS/nept/unlocks ``` #### Response ```json { "data": { "arrangements": [ { "begins_at": "2026-02-20T06:14:59Z", "schedule": { "kind": "linear", "duration": 31008389, "ends_at": "2027-02-14T03:41:28Z", "extra": { "text": { "duration": "358 days", "ends_at": "2027-02-14 03:41:28 AM +00:00" } } }, "last_claimed_at": "2026-04-08T08:33:15Z", "expires_at": "2027-11-05T06:50:12Z", "admin": { "address": "inj1loremipsumdolorsitametconsecteturadipi", "issued_reclaim": false }, "extra": { "text": { "expires_at": "2027-11-05 06:50:12 AM +00:00", "begins_at": "2026-02-20 06:14:59 AM +00:00", "last_claimed_at": "2026-04-08 08:33:15 AM +00:00" } }, "amounts": { "amount": "483256131", "claimed": "63415599", "claimable": "11801759", "locked": "408038773", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimed": "63.4155 NEPT", "locked": "408.0387 NEPT", "claimable": "11.8017 NEPT", "expired": "0.0000 NEPT", "reclaimed": "0.0000 NEPT", "amount": "483.2561 NEPT" }, "percent": { "expired": "0", "reclaimed": "0", "claimed": "0.131225648123230949", "locked": "0.844353018668686067", "claimable": "0.024421333208082982", "extra": { "text": { "claimable": "2.44%", "claimed": "13.12%", "expired": "0.00%", "reclaimed": "0.00%", "locked": "84.43%" } } }, "value": { "claimed": "2.066445391224422655", "amount": "15.747267556140183194", "locked": "13.296252896810426532", "expired": "0", "claimable": "0.384569268105334006", "reclaimed": "0", "price": "0.032585758453916404", "extra": { "text": { "amount": "$15.74", "reclaimed": "$0.00", "locked": "$13.29", "claimed": "$2.06", "expired": "$0.00", "price": "$0.03", "claimable": "$0.38" } } } } } }, { "begins_at": "2027-03-06T05:44:57Z", "schedule": { "kind": "linear", "duration": 22736541, "ends_at": "2027-11-24T09:27:18Z", "extra": { "text": { "duration": "263 days", "ends_at": "2027-11-24 09:27:18 AM +00:00" } } }, "last_claimed_at": null, "expires_at": "2028-02-03T03:00:56Z", "admin": { "address": "inj1loremipsumdolorsitametconsecteturadipi", "issued_reclaim": false }, "extra": { "text": { "expires_at": "2028-02-03 03:00:56 AM +00:00", "begins_at": "2027-03-06 05:44:57 AM +00:00", "last_claimed_at": "N/A" } }, "amounts": { "amount": "49667646", "claimed": "0", "claimable": "0", "locked": "49667646", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimed": "0.0000 NEPT", "locked": "49.6676 NEPT", "claimable": "0.0000 NEPT", "expired": "0.0000 NEPT", "reclaimed": "0.0000 NEPT", "amount": "49.6676 NEPT" }, "percent": { "expired": "0", "reclaimed": "0", "claimed": "0", "locked": "1", "claimable": "0", "extra": { "text": { "claimable": "0.00%", "claimed": "0.00%", "expired": "0.00%", "reclaimed": "0.00%", "locked": "100.00%" } } }, "value": { "claimed": "0", "amount": "1.618457915530627267", "locked": "1.618457915530627267", "expired": "0", "claimable": "0", "reclaimed": "0", "price": "0.032585758453916404", "extra": { "text": { "amount": "$1.61", "reclaimed": "$0.00", "locked": "$1.61", "claimed": "$0.00", "expired": "$0.00", "price": "$0.03", "claimable": "$0.00" } } } } } } ], "totals": { "amount": "532923777", "claimed": "63415599", "claimable": "11801759", "locked": "457706419", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimed": "63.4155 NEPT", "locked": "457.7064 NEPT", "claimable": "11.8017 NEPT", "expired": "0.0000 NEPT", "reclaimed": "0.0000 NEPT", "amount": "532.9237 NEPT" }, "percent": { "expired": "0", "reclaimed": "0", "claimed": "0.118995627023787306", "locked": "0.858859069070960217", "claimable": "0.022145303905252476", "extra": { "text": { "claimable": "2.21%", "claimed": "11.89%", "expired": "0.00%", "reclaimed": "0.00%", "locked": "85.88%" } } }, "value": { "claimed": "2.066445391224422655", "amount": "17.365725471670810461", "locked": "14.9147108123410538", "expired": "0", "claimable": "0.384569268105334006", "reclaimed": "0", "price": "0.032585758453916404", "extra": { "text": { "amount": "$17.36", "reclaimed": "$0.00", "locked": "$14.91", "claimed": "$2.06", "expired": "$0.00", "price": "$0.03", "claimable": "$0.38" } } } } }, "last_claimed_at": "2025-03-01T14:29:00Z", "extra": { "text": { "last_claimed_at": "2025-03-01 02:29:00 PM +00:00" } } }, "error": null, "status": 200, "status_text": "OK" } ```