Search
The Chainlink Developer Relations team maintains several testnet oracles that you can use to test your implementation quickly.
Link token address and Faucet details
To retrieve the LINK token address or get faucet details for your testnet of choice, see the LINK Token Contracts page.
Topics
Testnet Operator contracts are deployed and maintained on the following networks:
Testnet | Oracle Address |
---|---|
Ethereum Goerli | 0xCC79157eb46F5624204f47AB42b3906cAA40eaB7 |
Avalanche Fuji | 0x022EEA14A6010167ca026B32576D6686dD7e85d2 |
Polygon Mumbai | 0x40193c8518BB267228Fc409a613bDbD8eC5a97b3 |
Binance Testnet | 0xCC79157eb46F5624204f47AB42b3906cAA40eaB7 |
Fantom Testnet | 0xCC79157eb46F5624204f47AB42b3906cAA40eaB7 |
Klaytn Testnet | 0xfC3BdAbD8a6A73B40010350E2a61716a21c87610 |
To make testing simple, jobs are configured with the following properties:
Purpose | Tasks | Job ID | Required Parameters |
---|---|---|---|
GET>bytes: HTTP GET to any public API parse the response return arbitrary-length raw byte data bytes. The job specs can be found here | Http JsonParse Ethabiencode | 7da2702f37fd48e5b1b9a5715e3509b6 |
|
GET>uint256: HTTP GET to any public API parse the reponse multiply the result by a multiplier return an unsigned integer uint256 . The job specs can be found here | Http JsonParse Multiply Ethabiencode | ca98366cc7314957b8c012c72f05aeeb |
|
GET>int256: HTTP GET to any public API parse the response multiply the result by a multiplier return a signed integer int256. The job specs can be found here | Http JsonParse Multiply Ethabiencode | fcf4140d696d44b687012232948bdd5d |
|
GET>bool: HTTP GET to any public API parse the response return a boolean bool. The job specs can be found here | Http JsonParse Ethabiencode | c1c5e92880894eb6b27d3cae19670aa3 |
|
GET>string: HTTP GET to any public API parse the response return a sequence of characters string. The job specs can be found here | Http JsonParse Ethabiencode | 7d80a6386ef543a3abb52817f6707e3b |
|
A full example can be found here.
function request() public {
Chainlink.Request memory req = buildChainlinkRequest('7da2702f37fd48e5b1b9a5715e3509b6', address(this), this.fulfill.selector);
req.add(
'get',
'https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json'
);
req.add('path', 'image');
sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK
}
bytes public data;
string public imageUrl;
function fulfill(bytes32 requestId, bytes memory bytesData) public recordChainlinkFulfillment(requestId) {
data = bytesData;
imageUrl = string(data);
}
A full example can be found here.
function request() public {
Chainlink.Request memory req = buildChainlinkRequest('ca98366cc7314957b8c012c72f05aeeb', address(this), this.fulfill.selector);
req.add(
'get',
'https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD'
);
req.add('path', 'RAW,ETH,USD,VOLUME24HOUR');
req.addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals
sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK
}
uint256 public volume;
function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId) {
volume = _volume;
}
function request() public {
Chainlink.Request memory req = buildChainlinkRequest('fcf4140d696d44b687012232948bdd5d', address(this), this.fulfill.selector);
req.add(
'get',
'https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD'
);
req.add('path', 'RAW,ETH,USD,VOLUME24HOUR');
req.addInt('times', 10**18); // Multiply by times value to remove decimals. Parameter required so pass '1' if the number returned doesn't have decimals
sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK
}
int256 public volume;
function fulfill(bytes32 _requestId, int256 _volume) public recordChainlinkFulfillment(_requestId) {
volume = _volume;
}
function request() public {
Chainlink.Request memory req = buildChainlinkRequest('c1c5e92880894eb6b27d3cae19670aa3', address(this), this.fulfill.selector);
req.add(
'get',
'https://app.proofi.com/api/verify/eip155/0xCB5085214B6318aF3dd0FBbb5E74fbF6bf332151?contract=0x2f7f7E44ca1e2Ca1A54db4222cF97ab47EE026F1'
);
req.add('path', 'approved');
sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK
}
bool public approved;
function fulfill(bytes32 _requestId, bool _approved) public recordChainlinkFulfillment(_requestId) {
approved = _approved;
}
A full example can be found here.
function request() public {
Chainlink.Request memory req = buildChainlinkRequest('7d80a6386ef543a3abb52817f6707e3b', address(this), this.fulfill.selector);
req.add(
'get',
'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&per_page=10'
);
req.add('path', '0,id');
sendChainlinkRequest(req, (1 * LINK_DIVISIBILITY) / 10); // 0,1*10**18 LINK
}
string public id;
function fulfill(bytes32 _requestId, string memory _id) public recordChainlinkFulfillment(_requestId) {
id = _id;
}