# Models

## The Error object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}
```

## The SuccessMessage object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"SuccessMessage":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}
```

## The UserPublic object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"UserPublic":{"type":"object","properties":{"username":{"type":"string"},"avatar":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"stacks_count":{"type":"integer"},"telegram":{"type":"string","nullable":true},"discord":{"type":"string","nullable":true},"twitter":{"type":"string","nullable":true},"linkedin":{"type":"string","nullable":true},"personal":{"type":"string","nullable":true}}}}}}
```

## The TokenObject object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"TokenObject":{"type":"object","description":"Token representation returned by list/paginated_list actions.","properties":{"id":{"type":"integer"},"address":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"image_url":{"type":"string","nullable":true},"decimals":{"type":"integer"},"chain":{"type":"string"},"pool_address":{"type":"string","nullable":true},"cg_id":{"type":"string","nullable":true},"price":{"type":"number","nullable":true},"market_cap":{"type":"string","nullable":true},"volume_24h":{"type":"string","nullable":true},"change4H":{"type":"number","nullable":true},"change1D":{"type":"number","nullable":true},"change1W":{"type":"number","nullable":true},"change1M":{"type":"number","nullable":true},"changeAll":{"type":"number","nullable":true},"is_verified":{"type":"boolean"},"archived":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}}}}}}}
```

## The StackObject object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"StackObject":{"type":"object","description":"Canonical stack representation returned by discovery and fetch actions. Exact fields may vary by context (discovery vs portfolio vs trending).\n","properties":{"id":{"type":"integer"},"stack_name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string","nullable":true},"topic":{"type":"string","nullable":true,"description":"Stack risk/duration category."},"creator_fee":{"type":"number"},"price":{"type":"number","nullable":true},"weighted_market_cap":{"type":"number","nullable":true},"change4H":{"type":"number","nullable":true},"change1D":{"type":"number","nullable":true},"change1W":{"type":"number","nullable":true},"change1M":{"type":"number","nullable":true},"changeAll":{"type":"number","nullable":true},"token_count":{"type":"integer"},"investor_count":{"type":"integer"},"is_company_stack":{"type":"boolean"},"archived":{"type":"boolean"},"show_creator_holdings":{"type":"boolean"},"created_at":{"type":"integer","description":"Unix timestamp."},"time_p":{"type":"integer","nullable":true,"description":"Unix timestamp of last price update."},"tvl":{"type":"number","nullable":true,"description":"Total Value Locked in USD. Only present when tvl=true in request."},"user":{"type":"object","description":"Public creator profile.","properties":{"username":{"type":"string"},"avatar":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"stacks_count":{"type":"integer"},"telegram":{"type":"string","nullable":true},"discord":{"type":"string","nullable":true},"twitter":{"type":"string","nullable":true},"linkedin":{"type":"string","nullable":true},"personal":{"type":"string","nullable":true}}},"tokens":{"type":"array","description":"Token allocations within the stack.","items":{"type":"object","properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"image_url":{"type":"string","nullable":true},"weight":{"type":"number"},"is_verified":{"type":"boolean"}}}}}}}}}
```

## The PaginationOffsetLimit object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"PaginationOffsetLimit":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}}}}}}
```

## The PaginationPage object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"PaginationPage":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"total_pages":{"type":"integer"},"has_next":{"type":"boolean"},"has_prev":{"type":"boolean"}}}}}}
```

## The ChatMessage object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"ChatMessage":{"type":"object","properties":{"id":{"type":"integer"},"stack_id":{"type":"integer"},"messages":{"type":"string","description":"Message content."},"message_type":{"type":"string","enum":["community","creator_notes"]},"pinned":{"type":"boolean"},"created_at":{"type":"integer","description":"Unix timestamp."},"user":{"type":"object","properties":{"username":{"type":"string"},"avatar":{"type":"string","nullable":true}}}}}}}}
```

## The ReferralVolumeData object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"ReferralVolumeData":{"type":"object","properties":{"username":{"type":"string"},"total_successful_orders":{"type":"integer"},"total_orders":{"type":"integer"},"total_volume_micro_usdc":{"type":"integer"},"total_volume_usdc":{"type":"number"},"total_platform_fees_micro_usdc":{"type":"integer"},"total_platform_fees_usdc":{"type":"number"},"total_creator_fees_micro_usdc":{"type":"integer"},"total_creator_fees_usdc":{"type":"number"},"first_order_timestamp":{"type":"integer","nullable":true},"last_order_timestamp":{"type":"integer","nullable":true},"buy_volume_micro_usdc":{"type":"integer"},"buy_volume_usdc":{"type":"number"},"sell_volume_micro_usdc":{"type":"integer"},"sell_volume_usdc":{"type":"number"},"buy_orders_count":{"type":"integer"},"sell_orders_count":{"type":"integer"},"success_rate":{"type":"number"}}}}}}
```

## The LimitOrder object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"LimitOrder":{"type":"object","description":"Full limit order object returned by list and get actions. Includes token metadata and display fields.","properties":{"order_id":{"type":"string","description":"16-character unique order identifier"},"token_address":{"type":"string","description":"Solana token mint address"},"token_symbol":{"type":"string","nullable":true,"description":"Token ticker symbol"},"token_name":{"type":"string","nullable":true,"description":"Token display name"},"token_image":{"type":"string","nullable":true,"description":"Token logo URL"},"side":{"type":"string","enum":["buy","sell"],"description":"Order direction"},"condition_type":{"type":"string","enum":["lte","gte"],"description":"\"lte\" triggers when price <= target, \"gte\" triggers when price >= target"},"trigger_price":{"type":"number","description":"Target USD price threshold"},"amount":{"type":"number","description":"For buys: USDC amount. For sells: percentage of holdings (0-100)"},"amount_display":{"type":"string","description":"Human-readable amount — \"$50.00\" for buys, \"50%\" for sells"},"status":{"type":"string","enum":["ACTIVE","TRIGGERED","FILLING","FILLED","FAILED","CANCELLED"],"description":"Current lifecycle status"},"stack_id":{"type":"integer","description":"Company stack ID used for the trade"},"swap_provider":{"type":"string","enum":["jupiter","dflow"],"description":"Swap provider used for execution"},"created_at":{"type":"integer","description":"Unix timestamp of order creation"},"updated_at":{"type":"integer","nullable":true,"description":"Unix timestamp of last status change"},"triggered_at":{"type":"integer","nullable":true,"description":"Unix timestamp when the price condition was met"},"triggered_price":{"type":"number","nullable":true,"description":"Actual USD price that triggered the order"},"filled_at":{"type":"integer","nullable":true,"description":"Unix timestamp when the fill completed"},"fill_order_id":{"type":"string","nullable":true,"description":"Linked stack_orders.order_id for the fill"},"error_message":{"type":"string","nullable":true,"description":"Failure reason (only present when status is FAILED)"},"expires_at":{"type":"integer","nullable":true,"description":"Unix timestamp for automatic expiration, or null if no expiry"}}}}}}
```

## The LimitOrderPlaceResponse object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"LimitOrderPlaceResponse":{"type":"object","description":"Subset of limit order fields returned by the place action. Does not include token metadata or display fields.","properties":{"order_id":{"type":"string","description":"16-character unique order identifier"},"status":{"type":"string","enum":["ACTIVE"]},"token_address":{"type":"string","description":"Solana token mint address"},"side":{"type":"string","enum":["buy","sell"]},"condition_type":{"type":"string","enum":["lte","gte"]},"trigger_price":{"type":"number","description":"Target USD price threshold"},"amount":{"type":"number","description":"For buys: USDC amount. For sells: percentage (0-100)"},"stack_id":{"type":"integer","description":"Company stack ID used for the trade"},"swap_provider":{"type":"string","enum":["jupiter","dflow"]},"created_at":{"type":"integer","description":"Unix timestamp of order creation"},"expires_at":{"type":"integer","nullable":true,"description":"Unix timestamp for automatic expiration, or null if no expiry"}}}}}}
```

## The DeanonHoldersResponse object

```json
{"openapi":"3.0.3","info":{"title":"Indexify API","version":"0.1.12-beta"},"components":{"schemas":{"DeanonHoldersResponse":{"type":"object","description":"Response from the DeAnon holders endpoint. Contains identified token holders matched against a curated wallet-to-Twitter lookup table.","properties":{"mint":{"type":"string","description":"The requested token mint address"},"total_holders_fetched":{"type":"integer","description":"Total number of token accounts fetched from Helius RPC (up to 10,000)"},"identified_count":{"type":"integer","description":"Number of holders matched against the lookup table"},"identified_holders":{"type":"array","description":"Paginated list of identified holders, sorted by balance descending","items":{"type":"object","properties":{"rank":{"type":"integer","description":"1-based rank by balance across all identified holders"},"owner":{"type":"string","description":"Solana wallet address"},"twitter":{"type":"string","description":"Twitter/X profile URL"},"balance":{"type":"number","description":"Token balance in human-readable units (adjusted for decimals)"},"pct_supply":{"type":"number","description":"Percentage of total supply held, rounded to 6 decimal places"}}}},"pagination":{"type":"object","properties":{"offset":{"type":"integer","description":"Current offset"},"limit":{"type":"integer","description":"Current page size"},"total_count":{"type":"integer","description":"Total number of identified holders"},"has_more":{"type":"boolean","description":"True if there are more results after this page"},"has_previous":{"type":"boolean","description":"True if offset > 0"},"page":{"type":"integer","description":"Current page number (1-based)"},"total_pages":{"type":"integer","description":"Total number of pages"}}}}}}}}
```
