curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'sourceCode=<string>' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data contractname=contracts/Verified.sol:Verified \
--data 'compilerversion=v0.8.24+commit.e11b9ed9' \
--data zksolcVersion=v1.3.13 \
--data codeformat=solidity-standard-json-input \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a \
--data optimizationUsed=0import requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"sourceCode": "<string>",
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"contractname": "contracts/Verified.sol:Verified",
"compilerversion": "v0.8.24+commit.e11b9ed9",
"zksolcVersion": "v1.3.13",
"codeformat": "solidity-standard-json-input",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
"optimizationUsed": "0"
}
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({
sourceCode: '<string>',
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
contractname: 'contracts/Verified.sol:Verified',
compilerversion: 'v0.8.24+commit.e11b9ed9',
zksolcVersion: 'v1.3.13',
codeformat: 'solidity-standard-json-input',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a',
optimizationUsed: '0'
})
};
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 => "sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0",
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("sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0")
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("sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0")
.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 = "sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0"
response = http.request(request)
puts response.read_body{
"status": "1",
"message": "OK",
"result": "a7lpxkm9kpcpicx7daftmjifrfhiuhf5vqqnawhkfhzfrcpnxj"
}
Verify zkSync Source Code
Submit zkSync source code for verification.
curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'sourceCode=<string>' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data contractname=contracts/Verified.sol:Verified \
--data 'compilerversion=v0.8.24+commit.e11b9ed9' \
--data zksolcVersion=v1.3.13 \
--data codeformat=solidity-standard-json-input \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a \
--data optimizationUsed=0import requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"sourceCode": "<string>",
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"contractname": "contracts/Verified.sol:Verified",
"compilerversion": "v0.8.24+commit.e11b9ed9",
"zksolcVersion": "v1.3.13",
"codeformat": "solidity-standard-json-input",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
"optimizationUsed": "0"
}
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({
sourceCode: '<string>',
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
contractname: 'contracts/Verified.sol:Verified',
compilerversion: 'v0.8.24+commit.e11b9ed9',
zksolcVersion: 'v1.3.13',
codeformat: 'solidity-standard-json-input',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a',
optimizationUsed: '0'
})
};
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 => "sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0",
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("sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0")
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("sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0")
.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 = "sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.sol%3AVerified&compilerversion=v0.8.24%2Bcommit.e11b9ed9&zksolcVersion=v1.3.13&codeformat=solidity-standard-json-input&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a&optimizationUsed=0"
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 324 for zkSync Era from our supported chains.
Set to contract for this endpoint.
Set to verifysourcecode for this endpoint.
Body
The Solidity source code to verify.
The address where the contract is deployed.
"0xdAC17F958D2ee523a2206206994597C13D831ec7"
The contract name, including path if applicable.
"contracts/Verified.sol:Verified"
Compiler version used for compilation.
"v0.8.24+commit.e11b9ed9"
Required for EraVM contracts and optional for EVM contracts. Use a version with the v prefix, beginning with v1.3.0.
"v1.3.13"
Use solidity-single-file for a single file or solidity-standard-json-input for JSON input.
"solidity-standard-json-input"
Optional constructor arguments used in contract deployment.
"00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
Required when codeformat is solidity-single-file. Use 1 if optimization was used or 0 if disabled.
"0"
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.