API · User & Account
User & Account API
Manage your user profile, preferences, and account settings. Check listing eligibility and configure account-level behavior.
User profile
GET Get current user
Returns the authenticated user's profile, preferences, organization, and listing eligibility.
Response fields
| Field | Type | Description |
|---|---|---|
uid | string | User identifier (read-only) |
username | string | Username (read-only) |
email | string | Email address (read-only) |
first_name | string | First name (writable) |
last_name | string | Last name (writable) |
phone_number | string | Phone number (read-only) |
email_verified | boolean | Whether email is verified (read-only) |
can_manage_api_environment | boolean | API management permissions (read-only) |
preferences | object | Nested preferences (writable) |
organization | object | User's organization or null (read-only) |
listing_eligibility | object | Whether user can list items (read-only) |
PATCH Update profile
Update writable fields: first_name, last_name, and preferences.
curl https://app.instica.com/api/v1/user/me/ \
-H "Authorization: Bearer YOUR_TOKEN" {
"uid": "usr_abc123",
"username": "vinyl_dealer",
"email": "dealer@example.com",
"first_name": "Jane",
"last_name": "Smith",
"phone_number": "+15551234567",
"email_verified": true,
"can_manage_api_environment": false,
"preferences": {
"preferred_name": "Jane",
"items_per_page": 25,
"timezone": "America/New_York",
"measurement_system": "imperial",
"date_format": "mdy",
"currency_display": "USD",
"channel_notifications_enabled": true,
"preferred_notification_channels": [
"email", "push"
]
},
"organization": {
"uid": "org_xyz",
"display_name": "Jane's Records",
"slug": "janes-records"
},
"listing_eligibility": {
"can_list_items": true,
"error_code": null
}
} curl -X PATCH \
https://app.instica.com/api/v1/user/me/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Jane",
"last_name": "Smith-Jones"
}' Preferences
Preferences are updated via PATCH /api/v1/user/me/ as a nested object in the preferences field.
Preference fields
| Field | Type | Description |
|---|---|---|
preferred_name | string | Display name |
legal_name | string | Legal name |
job_title | string | Job title |
items_per_page | integer | Pagination size (5–200) |
channel_notifications_enabled | boolean | Enable/disable notifications |
timezone | string | IANA timezone (e.g., America/New_York) |
measurement_system | string | imperial or metric |
date_format | string | mdy, dmy, or ymd |
currency_display | string | Currency code (e.g., USD) |
preferred_notification_channels | string[] | email, push, in_app |
curl -X PATCH \
https://app.instica.com/api/v1/user/me/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"preferences": {
"timezone": "America/Chicago",
"items_per_page": 50,
"date_format": "ymd",
"preferred_notification_channels": [
"email", "push", "in_app"
]
}
}' Password management
POST Change password
Change the current user's password. Requires verification of the existing password.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
current_password | string | Yes | Current password (write-only) |
new_password | string | Yes | New password (write-only) |
confirm_password | string | Yes | Must match new_password (write-only) |
Note: This endpoint is separate from /api/auth/password/change/. Either can be used — this one lives under the user namespace.
curl -X POST \
https://app.instica.com/api/v1/user/password/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"current_password": "OldPass123",
"new_password": "NewSecure456",
"confirm_password": "NewSecure456"
}' Listing eligibility
The listing_eligibility field in the user profile indicates whether the user can list items on marketplaces. If listing is blocked, an error code explains why.
Eligibility response
| Field | Type | Description |
|---|---|---|
can_list_items | boolean | Whether the user can list items |
error_code | object | null | Blocking reason if can_list_items is false |
Error code object
| Field | Type | Description |
|---|---|---|
uid | string | Error code identifier |
slug | string | Machine-readable code (e.g., no_subscription) |
message | string | Short error message |
description | string | Detailed explanation |
{
"can_list_items": true,
"error_code": null
} {
"can_list_items": false,
"error_code": {
"uid": "err_001",
"slug": "no_primary_address",
"message": "Primary address required",
"description": "Add a primary shipping address before listing items."
}
} Device tokens
Manage push notification device tokens for iOS and web push.
| Endpoint | Method | Description |
|---|---|---|
/api/v1/device-tokens/register/ | POST | Register a device token |
/api/v1/device-tokens/ | GET | List registered tokens |
/api/v1/device-tokens/{uid}/deactivate/ | POST | Deactivate a token |
/api/v1/device-tokens/{uid}/refresh/ | POST | Refresh a token |
/api/v1/device-tokens/{uid}/ | DELETE | Delete a token |
curl -X POST \
https://app.instica.com/api/v1/device-tokens/register/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"token": "fcm_device_token_here",
"platform": "ios"
}' Support inquiries
Submit and manage support inquiries via the API.
| Endpoint | Method | Description |
|---|---|---|
/api/v1/support/ | POST | Submit a support inquiry |
/api/v1/support/inquiries/ | GET | List your inquiries |
/api/v1/support/inquiries/{uid}/ | GET | Inquiry detail |
curl -X POST \
https://app.instica.com/api/v1/support/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Import issue",
"message": "My eBay import is stuck..."
}'