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

# Contribute Reports



## OpenAPI

````yaml /specs/chainabuse-openapi.yaml post /reports/batch
openapi: 3.0.0
info:
  title: Chainabuse API
  version: 0.1.0
  description: >
    The API uses Basic Authentication to authenticate requests. You can generate
    a new API key from your user profile on Chainabuse.
  contact:
    email: hello@chainabuse.com
servers:
  - url: https://api.chainabuse.com/v0
security:
  - basic: []
paths:
  /reports/batch:
    post:
      tags:
        - Reports
      summary: Contribute Reports
      operationId: CreateReports
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CreateReportsInput'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReportResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - basic: []
components:
  schemas:
    CreateReportsInput:
      type: object
      additionalProperties: false
      required:
        - addresses
        - description
        - scamCategory
      properties:
        addresses:
          type: array
          description: List of addresses and/or domains.
          items:
            $ref: '#/components/schemas/CreateReportAddressData'
        tokens:
          type: array
          description: List of fraudulent NFT tokens
          items:
            type: object
            additionalProperties: false
            required:
              - tokenId
            properties:
              tokenId:
                type: string
        transactionHashes:
          type: array
          description: List of fraudulent transaction hashes
          items:
            type: object
            additionalProperties: false
            required:
              - hash
              - chain
            properties:
              hash:
                type: string
              chain:
                $ref: '#/components/schemas/ChainKind'
              label:
                type: string
        description:
          type: string
        scamCategory:
          $ref: '#/components/schemas/ScamCategoryKind'
        categoryDescription:
          type: string
        losses:
          type: array
          description: Optional. List of lost assets and their amounts.
          items:
            type: object
            required:
              - asset
              - amount
            properties:
              asset:
                type: string
              amount:
                type: number
                format: double
        evidences:
          type: array
          items:
            type: object
            required:
              - source
            properties:
              source:
                type: string
        compromiseIndicators:
          type: array
          items:
            type: object
            required:
              - value
              - type
            properties:
              value:
                type: string
              type:
                $ref: '#/components/schemas/CompromiseIndicatorKind'
        accusedScammers:
          type: array
          items:
            $ref: '#/components/schemas/AccusedScammer'
        agreedToBeContactedData:
          $ref: '#/components/schemas/AgreedToBeContactedData'
      example:
        scamCategory: RUG_PULL
        losses:
          - asset: USD
            amount: 50
          - asset: BTC
            amount: 0.12
        description: Project rug pulled me
        compromiseIndicators:
          - value: 192.168.1.1
            type: IP
        agreedToBeContactedData:
          agreed: true
          agreedToBeContactedByLawEnforcement: true
          name: John Doe
          email: john_doe@example.com
          phoneNumber: '123456789'
          whereDidYouHear: I heard about chainabuse from twitter.
          cityAndState: San Francisco, CA
          country: US
        addresses:
          - domain: scammer.example.com
        tokens:
          - tokenId: '120'
        transactionHashes:
          - transactionHash: '0x1bdb80d04c3c9c4b1507dbf08d6b4ce3d9286cdd08f7601f699cfd88ed17b6bb'
            chain: ETH
        accusedScammers:
          - info:
              - type: NAME
                contact: BTC player
              - type: EMAIL
                contact: rich-in-bitcoin@example.com
    CreateReportResponse:
      type: object
      required:
        - failedReports
        - createdReports
      properties:
        failedReports:
          type: array
          items:
            type: object
            required:
              - error
              - reportIndex
            properties:
              error:
                type: array
                items:
                  type: object
                  required:
                    - reason
                  properties:
                    reason:
                      type: string
              reportIndex:
                type: number
                format: double
        createdReports:
          type: array
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
    ErrorResponse:
      type: object
      required:
        - reason
      properties:
        reason:
          type: string
    CreateReportAddressData:
      anyOf:
        - type: object
          required:
            - chain
            - address
          properties:
            label:
              type: string
            chain:
              $ref: '#/components/schemas/ChainKind'
            domain:
              type: string
            address:
              type: string
        - type: object
          required:
            - domain
          properties:
            label:
              type: string
            chain:
              $ref: '#/components/schemas/ChainKind'
            domain:
              type: string
            address:
              type: string
    ChainKind:
      type: string
      enum:
        - BTC
        - ETH
        - TRON
        - SOL
        - POLYGON
        - BINANCE
        - HBAR
        - CARDANO
        - LITECOIN
        - AVALANCHE
        - MULTIVERSX
        - ARBITRUM
        - ALGORAND
        - BASE
        - TON
    ScamCategoryKind:
      type: string
      enum:
        - RUG_PULL
        - UKRANIAN_DONATION_SCAM
        - DONATION_SCAM
        - SEXTORTION
        - SIM_SWAP
        - PHISHING
        - RANSOMWARE
        - CONTRACT_EXPLOIT
        - AIRDROP
        - ROMANCE
        - PIGBUTCHERING
        - OTHER
        - FAKE_PROJECT
        - OTHER_BLACKMAIL
        - IMPERSONATION
        - FAKE_RETURNS
        - UPGRADE_SCAM
        - MAN_IN_THE_MIDDLE_ATTACK
        - OTHER_HACK
        - OTHER_INVESTMENT_SCAM
    CompromiseIndicatorKind:
      type: string
      enum:
        - FILE
        - HASH
        - IP
        - CATEGORY
        - VARIANT
    AccusedScammer:
      type: object
      required:
        - info
      properties:
        info:
          type: array
          items:
            type: object
            required:
              - type
              - contact
            properties:
              type:
                $ref: '#/components/schemas/AccusedScammerContactInfoKind'
              contact:
                type: string
    AgreedToBeContactedData:
      type: object
      additionalProperties: false
      required:
        - agreed
      properties:
        agreed:
          type: boolean
        agreedToBeContactedByLawEnforcement:
          type: boolean
        name:
          type: string
        email:
          type: string
        phoneNumber:
          type: string
        whereDidYouHear:
          type: string
        cityAndState:
          type: string
        country:
          type: string
        countryCode:
          type: string
        state:
          type: string
        stateCode:
          type: string
        city:
          type: string
        zipCode:
          type: string
        krollGroupActionOptIn:
          type: boolean
        krollRequestInvestigativeSupport:
          type: boolean
    AccusedScammerContactInfoKind:
      type: string
      enum:
        - NAME
        - EMAIL
        - PHONE
        - DISCORD
        - TELEGRAM
        - TWITTER
        - INSTAGRAM
        - GITHUB
        - FACEBOOK
        - WHATSAPP
        - TIKTOK
        - YOUTUBE
        - OTHER
  securitySchemes:
    basic:
      type: http
      scheme: basic

````