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

# Verify Contract with Source Code

> Verify a contract with its source code and compilation information. Returns a guid for checking verification status.



## OpenAPI

````yaml /openapi-specs/jsonrpc-endpoints.yaml get /?module=contract&action=verify
openapi: 3.1.0
info:
  title: Blockscout RPC API
  version: 1.0.0
  description: >
    Blockscout is an open-source blockchain explorer for Ethereum-based
    networks.


    This API is provided for developers transitioning applications from
    Etherscan to Blockscout 

    and applications requiring general API and data support. It supports GET and
    POST requests.


    ## Authentication


    **API keys are OPTIONAL** for all RPC endpoints. The API works without
    authentication but has different rate limits:


    - **Without API key:** 5 requests per second (shared pool across all users)

    - **With API key:** 10 requests per second per key (dedicated limit)

    - **Free tier:** Up to 3 API keys per account at no cost


    To use an API key, add `apikey=YOUR_API_KEY` to the query string:

    ```

    https://eth.blockscout.com/api?module=account&action=balance&address=0x123...&apikey=YOUR_API_KEY

    ```


    ## Base URL Format

    URLs vary by instance. With typical installations, access the API by adding
    `/api` to the end 

    of the instance URL.


    **Example:** `https://eth-sepolia.blockscout.com/api`


    ## Query Format


    ### RPC API (Module/Action format)

    An example query includes a module and action(s)/parameters:

    ```

    https://eth-sepolia.blockscout.com/api?module=account&action=balance&address=0x123...

    ```


    ### ETH RPC API (JSON-RPC format)

    Standard Ethereum JSON-RPC methods use POST requests to `/api/eth-rpc`:

    ```

    POST https://eth.blockscout.com/api/eth-rpc

    Content-Type: application/json


    {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}

    ```


    Note: API keys can also be used with ETH RPC endpoints by adding
    `?apikey=YOUR_API_KEY` to the URL.
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  contact:
    name: Blockscout Community
    url: https://discord.gg/blockscout
servers:
  - url: https://eth.blockscout.com/api
    description: Ethereum Mainnet Explorer (RPC API)
  - url: https://eth-sepolia.blockscout.com/api
    description: Ethereum Sepolia Testnet Explorer (RPC API)
  - url: https://base.blockscout.com/api
    description: Base Mainnet Explorer (RPC API)
  - url: https://optimism.blockscout.com/api
    description: Optimism Mainnet Explorer (RPC API)
  - url: https://gnosis.blockscout.com/api
    description: Gnosis Chain Explorer (RPC API)
security:
  - {}
tags:
  - name: Account
    description: Account-related endpoints
  - name: Block
    description: Block-related endpoints
  - name: Contract
    description: Smart contract-related endpoints
  - name: Logs
    description: Event logs endpoints
  - name: Stats
    description: Network statistics endpoints
  - name: Token
    description: Token-related endpoints
  - name: Transaction
    description: Transaction-related endpoints
  - name: ETH RPC
    description: Ethereum JSON-RPC compatible endpoints
externalDocs:
  url: https://docs.blockscout.com/devs/apis/rpc
paths:
  /?module=contract&action=verify:
    get:
      tags:
        - Contract
      summary: Verify Contract with Source Code
      description: >-
        Verify a contract with its source code and compilation information.
        Returns a guid for checking verification status.
      operationId: contract-verify
      parameters:
        - $ref: '#/components/parameters/module_contract'
        - in: query
          name: action
          required: true
          schema:
            type: string
            enum:
              - verify
          description: Action name (must be 'verify')
        - in: query
          name: addressHash
          schema:
            $ref: '#/components/schemas/AddressHash'
          required: true
          description: Contract address hash
        - in: query
          name: name
          schema:
            type: string
          required: true
          description: Contract name
        - in: query
          name: compilerVersion
          schema:
            type: string
          required: true
          description: Compiler version
        - in: query
          name: optimization
          schema:
            type: string
          required: true
          description: Whether optimizations enabled (0 is false 1 is true)
        - in: query
          name: contractSourceCode
          schema:
            type: string
          required: true
          description: Contract source code
        - in: query
          name: constructorArguments
          schema:
            type: string
          required: false
          description: Constructor arguments
        - in: query
          name: autodetectConstructorArguments
          schema:
            type: boolean
          required: false
          description: Auto-detect constructor arguments
        - in: query
          name: evmVersion
          schema:
            type: string
          required: false
          description: EVM version
        - in: query
          name: optimizationRuns
          schema:
            type: integer
          required: false
          description: Number of optimization runs
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ResponseOK'
                  - $ref: '#/components/schemas/ResponseNOTOK'
              example:
                message: OK
                result: guid-string-here
                status: '1'
      externalDocs:
        url: https://docs.blockscout.com/devs/apis/rpc/contract
components:
  parameters:
    module_contract:
      name: module
      in: query
      required: true
      schema:
        type: string
        enum:
          - contract
      description: Module name (must be 'contract')
  schemas:
    AddressHash:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      example: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae'
      description: 40-character hexadecimal address hash with 0x prefix
    ResponseOK:
      type: object
      properties:
        status:
          type: string
          enum:
            - '1'
          description: Status code (1 = OK)
        message:
          type: string
          example: OK
          description: Response message
    ResponseNOTOK:
      type: object
      properties:
        status:
          type: string
          enum:
            - '0'
          description: Status code (0 = Error)
        message:
          type: string
          example: NOTOK
          description: Error message
        result:
          type: string
          nullable: true
          description: Error details

````