> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bloodydash.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Create or Update Custom Asset

> Creates the custom asset, or replaces it if it already exists. The change is written to the custom asset CSV files and used by routing after the next asset refresh.



## OpenAPI

````yaml /api/swagger.json put /assets/{chain}/{address}
openapi: 3.0.1
info:
  title: BLOOD-V3 API
  contact: {}
  version: 0.0.1
servers:
  - url: //localhost:50000/api/v1
security: []
paths:
  /assets/{chain}/{address}:
    put:
      tags:
        - Assets
      summary: Create or Update Custom Asset
      description: >-
        Creates the custom asset, or replaces it if it already exists. The
        change is written to the custom asset CSV files and used by routing
        after the next asset refresh.
      parameters:
        - name: chain
          in: path
          description: Chain (solana, robinhood)
          required: true
          schema:
            type: string
        - name: address
          in: path
          description: Asset address
          required: true
          schema:
            type: string
      requestBody:
        description: Custom asset
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/handlers.upsertAssetRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.assetResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.ErrorResponse'
components:
  schemas:
    handlers.upsertAssetRequest:
      type: object
      properties:
        symbol:
          type: string
        decimals:
          type: integer
        coingecko_id:
          type: string
        pool:
          $ref: '#/components/schemas/handlers.assetPool'
    handlers.assetResponse:
      type: object
      properties:
        address:
          type: string
        chain:
          type: string
        symbol:
          type: string
        decimals:
          type: integer
        coingecko_id:
          type: string
        pool:
          $ref: '#/components/schemas/handlers.assetPool'
        source:
          type: string
          description: backend (read-only) or custom
        price:
          type: number
          description: Latest USD price, omitted if unknown
    handlers.ErrorResponse:
      type: object
      properties:
        error:
          type: string
    handlers.assetPool:
      type: object
      properties:
        address:
          type: string
        platform:
          type: string
        token_a:
          type: string
        token_b:
          type: string

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.