curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data codeformat=vyper-json \
--data 'sourceCode=<string>' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data contractname=contracts/Verified.vy:Verified \
--data compilerversion=vyper:0.4.0 \
--data optimizationUsed=0 \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42aimport requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"codeformat": "vyper-json",
"sourceCode": "<string>",
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"contractname": "contracts/Verified.vy:Verified",
"compilerversion": "vyper:0.4.0",
"optimizationUsed": "0",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
}
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({
codeformat: 'vyper-json',
sourceCode: '<string>',
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
contractname: 'contracts/Verified.vy:Verified',
compilerversion: 'vyper:0.4.0',
optimizationUsed: '0',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a'
})
};
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 => "codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
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("codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a")
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("codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a")
.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 = "codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
response = http.request(request)
puts response.read_body{
"status": "1",
"message": "OK",
"result": "a7lpxkm9kpcpicx7daftmjifrfhiuhf5vqqnawhkfhzfrcpnxj"
}
Verify Vyper Source Code
Submit a Vyper contract for verification.
curl --request POST \
--url 'https://api.etherscan.io/v2/api?apikey=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data codeformat=vyper-json \
--data 'sourceCode=<string>' \
--data contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data contractname=contracts/Verified.vy:Verified \
--data compilerversion=vyper:0.4.0 \
--data optimizationUsed=0 \
--data constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42aimport requests
url = "https://api.etherscan.io/v2/api?apikey="
payload = {
"codeformat": "vyper-json",
"sourceCode": "<string>",
"contractaddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"contractname": "contracts/Verified.vy:Verified",
"compilerversion": "vyper:0.4.0",
"optimizationUsed": "0",
"constructorArguments": "00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
}
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({
codeformat: 'vyper-json',
sourceCode: '<string>',
contractaddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
contractname: 'contracts/Verified.vy:Verified',
compilerversion: 'vyper:0.4.0',
optimizationUsed: '0',
constructorArguments: '00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a'
})
};
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 => "codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a",
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("codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a")
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("codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a")
.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 = "codeformat=vyper-json&sourceCode=%3Cstring%3E&contractaddress=0xdAC17F958D2ee523a2206206994597C13D831ec7&contractname=contracts%2FVerified.vy%3AVerified&compilerversion=vyper%3A0.4.0&optimizationUsed=0&constructorArguments=00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
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
Use vyper-json for Vyper contracts.
"vyper-json"
The Vyper source code in JSON format.
The address where the contract is deployed.
"0xdAC17F958D2ee523a2206206994597C13D831ec7"
The contract name, including path if applicable.
"contracts/Verified.vy:Verified"
Compiler version used for compilation. See the supported Vyper compiler versions.
"vyper:0.4.0"
Use 1 if compiler optimizations were enabled, otherwise 0.
"0"
Optional constructor arguments used in contract deployment.
"00000000000000000000000074271f2282ed7ee35c166122a60c9830354be42a"
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.