# Account

## Fetch authenticated user profile

> Returns the full profile for the currently authenticated user including roles, wallet address, and masked phone number.<br>

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/user_info.php?action=fetch":{"post":{"operationId":"userInfoFetch","summary":"Fetch authenticated user profile","description":"Returns the full profile for the currently authenticated user including roles, wallet address, and masked phone number.\n","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["fetch"]}}],"responses":{"200":{"description":"Full user profile.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"email":{"type":"string"},"avatar":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"slippage":{"type":"string"},"priority_fee":{"type":"string"},"phone_verified":{"type":"boolean"},"phone_number_last_2":{"type":"string","nullable":true,"description":"Last two digits of the phone number."},"twitter":{"type":"string","nullable":true},"telegram":{"type":"string","nullable":true},"discord":{"type":"string","nullable":true},"linkedin":{"type":"string","nullable":true},"personal":{"type":"string","nullable":true},"wallet_address":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"roles":{"type":"array","items":{"type":"string"}}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"User not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/user\_info.php?action=update

> Update user profile fields

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/user_info.php?action=update":{"post":{"operationId":"userInfoUpdate","summary":"Update user profile fields","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["update"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","minLength":3,"maxLength":30,"description":"Alphanumeric + underscores only."},"bio":{"type":"string","description":"Free-text bio. Send empty string to clear."},"slippage":{"type":"string","description":"Slippage tolerance as a decimal string."},"priority_fee":{"type":"string","description":"Priority fee in SOL (0 to 0.002)."}}}}}},"responses":{"200":{"description":"Update succeeded.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"updates":{"type":"object","additionalProperties":true,"description":"Map of updated field names to their new values."}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/user\_info.php?action=check\_name

> Check username availability

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[],"paths":{"/api/user_info.php?action=check_name":{"post":{"operationId":"userInfoCheckName","summary":"Check username availability","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["check_name"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Username status.","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["OK","TAKEN","INVALID"]}}}}}}}}}}}
```

## POST /api/user\_info.php?action=search

> Search users by username or bio

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[],"paths":{"/api/user_info.php?action=search":{"post":{"operationId":"userInfoSearch","summary":"Search users by username or bio","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["search"]}},{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search term matched against username and bio."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0}},{"name":"include_stats","in":"query","required":false,"schema":{"type":"string","enum":["true","false"],"default":"false"},"description":"When \"true\", each user object includes a `stats` sub-object."}],"responses":{"200":{"description":"Matching users with pagination metadata.","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string"},"avatar":{"type":"string"},"display_name":{"type":"string","nullable":true},"verified":{"type":"boolean"},"stats":{"type":"object","description":"Present only when `include_stats=true`.","additionalProperties":true}}}},"pagination":{"type":"object","properties":{"total_count":{"type":"integer"},"has_next":{"type":"boolean"},"offset":{"type":"integer"},"limit":{"type":"integer"}}}}}}}}}}}}}
```

## Delete the authenticated user's account

> Permanently deletes the user account after 2FA verification.  All stacks are archived, follow relationships removed, and the wallet private key is returned one final time.<br>

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/user_info.php?action=delete_account":{"post":{"operationId":"userInfoDeleteAccount","summary":"Delete the authenticated user's account","description":"Permanently deletes the user account after 2FA verification.  All stacks are archived, follow relationships removed, and the wallet private key is returned one final time.\n","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["delete_account"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["verification_code"],"properties":{"verification_code":{"type":"string","description":"2FA verification code."}}}}}},"responses":{"200":{"description":"Account deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"private_key":{"type":"string","description":"Wallet private key returned for final export."},"retry_count":{"type":"integer"},"deletion_summary":{"type":"object","properties":{"user_id":{"type":"integer"},"archived_stacks":{"type":"integer"},"follow_relationships_removed":{"type":"integer"}}}}}}}},"400":{"description":"Validation error (2FA required, code required, invalid code, remaining balance).\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/profile.php?action=twitter

> Update Twitter handle

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/profile.php?action=twitter":{"post":{"operationId":"profileUpdateTwitter","summary":"Update Twitter handle","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["twitter"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Twitter/X username (1-15 chars, alphanumeric + underscores). Send empty string or null to remove.\n"}}}}}},"responses":{"200":{"description":"Handle updated or removed.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["success"]},"message":{"type":"string"}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"]},"message":{"type":"string"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/profile.php?action=telegram

> Update Telegram handle

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/profile.php?action=telegram":{"post":{"operationId":"profileUpdateTelegram","summary":"Update Telegram handle","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["telegram"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Telegram username (1-100 chars, alphanumeric + underscores). Send empty string or null to remove.\n"}}}}}},"responses":{"200":{"description":"Handle updated or removed.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["success"]},"message":{"type":"string"}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"]},"message":{"type":"string"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/profile.php?action=discord

> Update Discord username

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/profile.php?action=discord":{"post":{"operationId":"profileUpdateDiscord","summary":"Update Discord username","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["discord"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Discord username (2-32 chars, lowercase alphanumeric + underscore + period, no consecutive periods) or legacy format (User#1234).  Send empty string or null to remove.\n"}}}}}},"responses":{"200":{"description":"Username updated or removed.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["success"]},"message":{"type":"string"}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"]},"message":{"type":"string"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/profile.php?action=linkedin

> Update LinkedIn profile URL

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/profile.php?action=linkedin":{"post":{"operationId":"profileUpdateLinkedin","summary":"Update LinkedIn profile URL","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["linkedin"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Full LinkedIn profile URL starting with `https://www.linkedin.com/in/` or `https://linkedin.com/in/`. Send empty string or null to remove.\n"}}}}}},"responses":{"200":{"description":"Profile URL updated or removed.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["success"]},"message":{"type":"string"}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"]},"message":{"type":"string"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/profile.php?action=personal

> Update personal website URL

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/profile.php?action=personal":{"post":{"operationId":"profileUpdatePersonal","summary":"Update personal website URL","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["personal"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Any valid URL.  Send empty string or null to remove.\n"}}}}}},"responses":{"200":{"description":"Website URL updated or removed.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["success"]},"message":{"type":"string"}}}}}},"400":{"description":"Validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"]},"message":{"type":"string"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=get\_notifications

> Get paginated notifications

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=get_notifications":{"post":{"operationId":"notificationsGet","summary":"Get paginated notifications","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["get_notifications"]}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"integer","default":1,"minimum":1},"limit":{"type":"integer","default":20,"minimum":1,"maximum":100},"auto_cleanup":{"type":"boolean","default":false,"description":"When true, old notifications are automatically purged."}}}}}},"responses":{"200":{"description":"Paginated notifications list.","content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"origin":{"type":"string","enum":["stack_follow","price_movement","transaction_deposit","transaction_withdrawal","transaction_buy","transaction_sell","creator_fee_received","creator_note","trending_stack","stack_closed"]},"type":{"type":"string","enum":["transaction","system","social","trading","achievement","stack","general"]},"content":{"type":"string"},"read":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"metadata":{"type":"object","additionalProperties":true}}}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=get\_unread\_count

> Get unread notification count

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=get_unread_count":{"post":{"operationId":"notificationsUnreadCount","summary":"Get unread notification count","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["get_unread_count"]}}],"responses":{"200":{"description":"Unread count.","content":{"application/json":{"schema":{"type":"object","required":["unread_count"],"properties":{"unread_count":{"type":"integer"}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=mark\_read

> Mark a single notification as read

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=mark_read":{"post":{"operationId":"notificationsMarkRead","summary":"Mark a single notification as read","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["mark_read"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["notification_id"],"properties":{"notification_id":{"type":"integer"}}}}}},"responses":{"200":{"description":"Notification marked as read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"400":{"description":"Missing or invalid notification_id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Notification not found or does not belong to user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=dismiss\_all

> Dismiss all notifications

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=dismiss_all":{"post":{"operationId":"notificationsDismissAll","summary":"Dismiss all notifications","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["dismiss_all"]}}],"responses":{"200":{"description":"All notifications dismissed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=delete

> Delete a single notification

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=delete":{"post":{"operationId":"notificationsDelete","summary":"Delete a single notification","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["delete"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["notification_id"],"properties":{"notification_id":{"type":"integer"}}}}}},"responses":{"200":{"description":"Notification deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"400":{"description":"Missing or invalid notification_id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Notification not found or does not belong to user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notifications.php?action=delete\_all

> Delete all notifications

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notifications.php?action=delete_all":{"post":{"operationId":"notificationsDeleteAll","summary":"Delete all notifications","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["delete_all"]}}],"responses":{"200":{"description":"All notifications deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notification\_preferences.php?action=get

> Get notification preferences

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notification_preferences.php?action=get":{"post":{"operationId":"notificationPreferencesGet","summary":"Get notification preferences","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["get"]}}],"responses":{"200":{"description":"List of notification type preferences.","content":{"application/json":{"schema":{"type":"object","required":["preferences"],"properties":{"preferences":{"type":"array","items":{"type":"object","required":["notification_type","enabled"],"properties":{"notification_type":{"type":"string","enum":["stack_follow","price_movement","transaction","creator_fee","creator_note","trending_stack","stack_closed"]},"enabled":{"type":"boolean"}}}}}}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notification\_preferences.php?action=update

> Update a single notification preference

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notification_preferences.php?action=update":{"post":{"operationId":"notificationPreferencesUpdate","summary":"Update a single notification preference","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["update"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["notification_type","enabled"],"properties":{"notification_type":{"type":"string","enum":["stack_follow","price_movement","transaction","creator_fee","creator_note","trending_stack","stack_closed"]},"enabled":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Preference updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"400":{"description":"Missing required fields.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /api/notification\_preferences.php?action=update\_bulk

> Update multiple notification preferences at once

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"servers":[{"url":"https://api.indexify.finance","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key with the `ix_` prefix. You can generate an API Key by navigating to Settings -> API Key in the web app. Pass it in the `X-API-KEY` header on every request."}},"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"paths":{"/api/notification_preferences.php?action=update_bulk":{"post":{"operationId":"notificationPreferencesUpdateBulk","summary":"Update multiple notification preferences at once","tags":["Account"],"parameters":[{"name":"action","in":"query","required":true,"schema":{"type":"string","enum":["update_bulk"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preferences"],"properties":{"preferences":{"type":"array","minItems":1,"items":{"type":"object","required":["notification_type","enabled"],"properties":{"notification_type":{"type":"string","enum":["stack_follow","price_movement","transaction","creator_fee","creator_note","trending_stack","stack_closed"]},"enabled":{"type":"boolean"}}}}}}}}},"responses":{"200":{"description":"All preferences updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessMessage"}}}},"400":{"description":"Missing or empty preferences array.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```
