curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data 'sourceCode=<string>' \
--data contractname=contracts/Verified.sol:Verified \
--data 'compilerversion=v0.8.24+commit.e11b9ed9' \
--data codeformat=solidity-standard-json-input \
--data optimizationUsed=0 \
--data runs=200 \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a \
--data evmVersion=default \
--data licenseType=1import requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"sourceCode": "<string>",
"contractname": "contracts/Verified.sol:Verified",
"compilerversion": "v0.8.24+commit.e11b9ed9",
"codeformat": "solidity-standard-json-input",
"optimizationUsed": "0",
"runs": "200",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
"evmVersion": "default",
"licenseType": "1"
}
headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
sourceCode: '<string>',
contractname: 'contracts/Verified.sol:Verified',
compilerversion: 'v0.8.24+commit.e11b9ed9',
codeformat: 'solidity-standard-json-input',
optimizationUsed: '0',
runs: '200',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a',
evmVersion: 'default',
licenseType: '1'
})
};
fetch('https://api.etherscan.io/v2/api?apikey=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.etherscan.io/v2/api?apikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1",
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.etherscan.io/v2/api?apikey="
payload := strings.NewReader("contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.etherscan.io/v2/api?apikey=")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.etherscan.io/v2/api?apikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/x-www-form-urlencoded'
request.body = "contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1"
response = http.request(request)
puts response.read_body{
"status": "1",
"message": "OK",
"result": "a7lpxkm9kpcpicx7daftmjifrfhiuhf5vqqnawhkfhzfrcpnxj"
}
Verify Solidity Source Code
Submit a Solidity source code for verification.
curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data 'sourceCode=<string>' \
--data contractname=contracts/Verified.sol:Verified \
--data 'compilerversion=v0.8.24+commit.e11b9ed9' \
--data codeformat=solidity-standard-json-input \
--data optimizationUsed=0 \
--data runs=200 \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a \
--data evmVersion=default \
--data licenseType=1import requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"sourceCode": "<string>",
"contractname": "contracts/Verified.sol:Verified",
"compilerversion": "v0.8.24+commit.e11b9ed9",
"codeformat": "solidity-standard-json-input",
"optimizationUsed": "0",
"runs": "200",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
"evmVersion": "default",
"licenseType": "1"
}
headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
sourceCode: '<string>',
contractname: 'contracts/Verified.sol:Verified',
compilerversion: 'v0.8.24+commit.e11b9ed9',
codeformat: 'solidity-standard-json-input',
optimizationUsed: '0',
runs: '200',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a',
evmVersion: 'default',
licenseType: '1'
})
};
fetch('https://api.etherscan.io/v2/api?apikey=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.etherscan.io/v2/api?apikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1",
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.etherscan.io/v2/api?apikey="
payload := strings.NewReader("contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.etherscan.io/v2/api?apikey=")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.etherscan.io/v2/api?apikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/x-www-form-urlencoded'
request.body = "contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&sourceCode=%3Cstring%3E&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&codeformat=solidity-standard-json-input&optimizationUsed=0&runs=200&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&evmVersion=default&licenseType=1"
response = http.request(request)
puts response.read_body{
"status": "1",
"message": "OK",
"result": "a7lpxkm9kpcpicx7daftmjifrfhiuhf5vqqnawhkfhzfrcpnxj"
}
{
"status": "1",
"message": "OK",
"result": "a7lpxkm9kpcpicx7daftmjifrfhiuhf5vqqnawhkfhzfrcpnxj"
}
Authorizations
Enter your Etherscan API key, or set one up if you don't have one.
Query Parameters
Chain ID to query, eg 1 for Ethereum, 42161 for Arbitrum from our supported chains.
Set to contract for this endpoint.
Set to verifysourcecode for this endpoint.
Body
The address where the contract is deployed.
"0xdAC17F958D2ee523a2206206994597C13D831ec7"
The Solidity source code to verify.
The contract name, including path if applicable. If codeformat=solidity-standard-json-input, then enter contractname as erc20.sol:erc20.
"contracts/Verified.sol:Verified"
Compiler version used for compilation. See the supported Solidity compiler versions.
"v0.8.24+commit.e11b9ed9"
Use solidity-single-file for a single file or solidity-standard-json-input for JSON input.
"solidity-standard-json-input"
Required for solidity-single-file verification and when codeformat is omitted or unrecognized. Not required for solidity-standard-json-input.
"0"
Number of optimization runs.
"200"
Optional constructor arguments used in contract deployment.
"00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
Use compiler default or specify an EVM version such as byzantium, shanghai.
"default"
The open source license to associate with the verified source code, e.g 3 for MIT.
"1"
Response
Successful response
1 if the request returned data, 0 otherwise. A status of 0 can indicate an error or a valid request that returned no records.
OK on success, otherwise an error description such as NOTOK. See common error messages.
GUID for the verification submission. Use it with checkverifystatus to poll the result.