## Get user NEPT unlocks `user.nept.get_unlocks(straddress, NeptGetUnlocksParams**kwargs) -> NeptGetUnlocksResponse` **get** `/api/v1/users/{address}/nept/unlocks` Get user NEPT unlocks ### Parameters - `address: str` The user account address - `with_percent: Optional[bool]` Calculate and include proportional percentages, where applicable - `with_text: Optional[bool]` Include text variation fields - `with_value: Optional[bool]` Calculate and include USD values for amounts, where applicable ### Returns - `class NeptGetUnlocksResponse: …` - `data: UserUnlockOverview` - `arrangements: List[Arrangement]` A list of the user's active unlock arrangements - `admin: Optional[ArrangementAdmin]` The admin of the unlock, if any - `address: str` The address of the unlock arrangement's admin - `issued_reclaim: bool` True if the admin his issued a reclaim on the unlock arrangement - `amounts: UserUnlockAmounts` Primary unlock amount and other pre-calculated/derived amounts - `amount: str` The full unlock amount This value is immutable and does not change with regards to expiry/reclamation/lock states. - `claimable: str` 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: str` The amount that has already been successfully claimed by the user. - `expired: str` The amount that was claimable but has now expired due to the presence and subsequent passing of `expires_at` - `extra: Extra` - `percent: Optional[ExtraPercent]` 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: str` - `claimed: str` - `expired: str` - `extra: ExtraPercentExtra` - `text: Optional[ExtraPercentExtraText]` Human-readable variants of percentages for unlock amounts. Will not be null when query params `with_text` and `with_percent` are `true`. - `claimable: str` - `claimed: str` - `expired: str` - `locked: str` - `reclaimed: str` - `locked: str` - `reclaimed: str` - `text: Optional[ExtraText]` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `amount: str` - `claimable: str` - `claimed: str` - `expired: str` - `locked: str` - `reclaimed: str` - `value: Optional[ExtraValue]` 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: str` - `claimable: str` - `claimed: str` - `expired: str` - `extra: ExtraValueExtra` - `text: Optional[ExtraValueExtraText]` Human-readable variants of USD values. Will not be null when query params `with_text` and `with_value` are `true`. - `amount: str` - `claimable: str` - `claimed: str` - `expired: str` - `locked: str` - `price: str` Text representation of price - `reclaimed: str` - `locked: str` - `price: str` Price used in value calculations - `reclaimed: str` - `locked: str` 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: str` The amount that has been reclaimed from the unlock arrangement admin - `begins_at: datetime` The time at which the unlock begins - `expires_at: Optional[datetime]` The time at which the unlock expires, if any - `extra: ArrangementExtra` - `text: Optional[ArrangementExtraText]` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `begins_at: str` - `expires_at: str` - `last_claimed_at: str` - `last_claimed_at: Optional[datetime]` The time at which the unlock was last claimed, if any - `schedule: UserUnlockSchedule` The schedule of the unlock - `class UserUnlockScheduleLinear: …` - `duration: int` The duration of the unlock in seconds - `ends_at: datetime` 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: Extra` - `text: Optional[ExtraText]` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `duration: str` - `ends_at: str` - `kind: Literal["linear"]` - `"linear"` - `class UserUnlockScheduleLumpSum: …` - `kind: Literal["lump_sum"]` - `"lump_sum"` - `extra: Extra` - `text: Optional[ExtraText]` Human-readable field variants. Will not be null when query param `with_text` is `true`. - `last_claimed_at: str` - `last_claimed_at: Optional[datetime]` The time at which the most recent unlock claim occurred, if any - `totals: UserUnlockAmounts` Contains pre-calculated total amounts for all unlock agreements - `error: None` Error data. Guaranteed `null` for successful response. - `status: int` HTTP status. Successful responses are guaranteed to be < `400`. Conversely, error responses are guaranteed to be >= `400`. - `status_text: str` HTTP status text ### Example ```python from neptune_api_v2 import NeptuneAPIV2 client = NeptuneAPIV2() response = client.user.nept.get_unlocks( address="injvalcons1a03k0ztfyjnd70apawva003pkh0adqmau0a9q0", ) print(response.data) ``` #### Response ```json { "data": { "arrangements": [ { "begins_at": "2026-07-22T08:40:54Z", "schedule": { "kind": "linear", "duration": 1692380, "ends_at": "2026-08-10T22:47:14Z", "extra": { "text": { "ends_at": "2026-08-10 10:47:14 PM +00:00", "duration": "19 days" } } }, "last_claimed_at": null, "expires_at": "2027-07-20T13:44:39Z", "admin": { "address": "inj1loremipsumdolorsitametconsecteturadipi", "issued_reclaim": false }, "extra": { "text": { "begins_at": "2026-07-22 08:40:54 AM +00:00", "last_claimed_at": "N/A", "expires_at": "2027-07-20 01:44:39 PM +00:00" } }, "amounts": { "amount": "539033513", "claimed": "0", "claimable": "0", "locked": "539033513", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimable": "0.0000 NEPT", "amount": "539.0335 NEPT", "reclaimed": "0.0000 NEPT", "locked": "539.0335 NEPT", "claimed": "0.0000 NEPT", "expired": "0.0000 NEPT" }, "percent": { "reclaimed": "0", "claimable": "0", "claimed": "0", "expired": "0", "locked": "1", "extra": { "text": { "locked": "100.00%", "reclaimed": "0.00%", "claimable": "0.00%", "expired": "0.00%", "claimed": "0.00%" } } }, "value": { "reclaimed": "0", "amount": "17.564815853184007856", "claimed": "0", "expired": "0", "price": "0.032585758453916404", "claimable": "0", "locked": "17.564815853184007856", "extra": { "text": { "expired": "$0.00", "claimed": "$0.00", "price": "$0.03", "locked": "$17.56", "reclaimed": "$0.00", "amount": "$17.56", "claimable": "$0.00" } } } } } }, { "begins_at": "2026-05-13T03:54:17Z", "schedule": { "kind": "linear", "duration": 26581850, "ends_at": "2027-03-16T19:45:07Z", "extra": { "text": { "ends_at": "2027-03-16 07:45:07 PM +00:00", "duration": "307 days" } } }, "last_claimed_at": null, "expires_at": "2028-01-16T01:05:19Z", "admin": { "address": "inj1loremipsumdolorsitametconsecteturadipi", "issued_reclaim": false }, "extra": { "text": { "begins_at": "2026-05-13 03:54:17 AM +00:00", "last_claimed_at": "N/A", "expires_at": "2028-01-16 01:05:19 AM +00:00" } }, "amounts": { "amount": "47623136", "claimed": "0", "claimable": "0", "locked": "47623136", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimable": "0.0000 NEPT", "amount": "47.6231 NEPT", "reclaimed": "0.0000 NEPT", "locked": "47.6231 NEPT", "claimed": "0.0000 NEPT", "expired": "0.0000 NEPT" }, "percent": { "reclaimed": "0", "claimable": "0", "claimed": "0", "expired": "0", "locked": "1", "extra": { "text": { "locked": "100.00%", "reclaimed": "0.00%", "claimable": "0.00%", "expired": "0.00%", "claimed": "0.00%" } } }, "value": { "reclaimed": "0", "amount": "1.55183600651401064", "claimed": "0", "expired": "0", "price": "0.032585758453916404", "claimable": "0", "locked": "1.55183600651401064", "extra": { "text": { "expired": "$0.00", "claimed": "$0.00", "price": "$0.03", "locked": "$1.55", "reclaimed": "$0.00", "amount": "$1.55", "claimable": "$0.00" } } } } } } ], "totals": { "amount": "586656649", "claimed": "0", "claimable": "0", "locked": "586656649", "expired": "0", "reclaimed": "0", "extra": { "text": { "claimable": "0.0000 NEPT", "amount": "586.6566 NEPT", "reclaimed": "0.0000 NEPT", "locked": "586.6566 NEPT", "claimed": "0.0000 NEPT", "expired": "0.0000 NEPT" }, "percent": { "reclaimed": "0", "claimable": "0", "claimed": "0", "expired": "0", "locked": "1", "extra": { "text": { "locked": "100.00%", "reclaimed": "0.00%", "claimable": "0.00%", "expired": "0.00%", "claimed": "0.00%" } } }, "value": { "reclaimed": "0", "amount": "19.116651859698018496", "claimed": "0", "expired": "0", "price": "0.032585758453916404", "claimable": "0", "locked": "19.116651859698018496", "extra": { "text": { "expired": "$0.00", "claimed": "$0.00", "price": "$0.03", "locked": "$19.11", "reclaimed": "$0.00", "amount": "$19.11", "claimable": "$0.00" } } } } }, "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": "200 OK" } ```