Extension API는 표준(ERC-721) API가 지원하지 않는 기능들을 제공합니다.
NFT 로열티 정보 조회
토큰 ID(tokenId
)와 NFT 판매금액(salePrice
)을 사용해 로열티를 지급받을 계정 주소와 로열티 금액을 조회합니다. 로열티는 ERC-2981/CW-2981 인터페이스를 구현한 컨트랙트에서 NFT 발행 시 설정할 수 있습니다.
Request URL
Live URL | https://bc-api.qpyou.cn/core/v1/nft/extension/{contract}/royalty/{tokenId} |
---|---|
Sandbox URL | https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/{contract}/royalty/{tokenId} |
HTTP Method | GET |
Content-Type | application/json |
Path Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
contract | NFT 컨트랙트 주소 | string | Y |
tokenId | NFT ID | string | Y |
Header Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Query Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
salePrice | NFT 판매금액 | string | Y |
Responses
필드명 | 설명 | 타입 |
---|---|---|
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.receiver | 로열티를 받을 지갑 주소 | string |
data.amount | 로열티 금액 | string |
Request Sample
1 2 3 4 5 |
curl -X 'GET' \ 'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/0xA3F4308Ed655f962dD7CA180545c21718fAE49AD/royalty/1?salePrice=0.5' \ -H 'accept: application/json' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' -H 'x-network: polygon' |
Response Sample
1 2 3 4 5 6 7 8 |
{ "code": 0, "message": "success", "data": { "receiver": "0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0", "amount": "0.0375" } } |
NFT 발행
특정 주소(to
)로 토큰을 발행하는 트랜잭션을 생성합니다. 발행할 NFT 정보(mintMsg.tokenId
, mintMsg.metadata
등)를 배열에 담아 호출하며, NFT 정보를 IPFS(InterPlanetary File System)에 업로드한 후 토큰으로 발행합니다. NFT API 기능을 확장한 API로 한 번에 최대 200개 토큰을 발행할 수 있고 로열티를 설정할 수 있습니다. from
은 발행 권한을 가진 계정이어야 합니다.
Request URL
Live URL | https://bc-api.qpyou.cn/core/v1/nft/extension/{contract}/mint |
---|---|
Sandbox URL | https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/{contract}/mint |
HTTP Method | POST |
Content-Type | application/json |
Path Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
contract | NFT 컨트랙트 주소 | string | Y |
Header Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request Body
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
from | NFT를 발행하는 계정 주소 | string | Y |
mintMsg | 발행 시 필요한 정보입니다. JSON 데이터 array 형식이므로 여러 계정에게 발행할 수 있습니다. | array | Y |
mintMsg.to | NFT를 받을 지갑 주소 | string | Y |
mintMsg.tokenId | NFT ID입니다. NFT 발행자가 지정하며 중복을 허용하지 않습니다.
|
string | Y |
mintMsg.royaltyPercentage | 로열티 비율입니다. NFT가 판매 또는 재판매될 때마다 NFT 작성자 또는 권리를 가진 보유자에게 지불할 금액입니다. 총 판매금액에 로열티로 지불할 비율이 설정됩니다. 아티스트 및 기타 NFT 제작자에게 지속적인 자금을 지원하려는 NFT 마켓 플레이스를 위한 기능입니다. NFT 전송 시 수취인에게 로열티가 자동으로 지불되지 않으며, 마켓 플레이스에서 NFT 로열티를 확인하고 수취인에게 지불합니다. OpenSea에 적용된 기능입니다.
|
number | N |
mintMsg.metadata | 메타데이터
|
json | Y |
mintMsg.metadata.name | NFT 이름 | string | Y |
mintMsg.metadata.description | NFT 설명 | string | N |
mintMsg.metadata.image | NFT 이미지 주소입니다. IPFS에 업로드하기 위한 외부에서 접근 가능한 웹사이트 주소 또는 Public IPFS 주소입니다. | string | Y |
mintMsg.metadata.animationUrl | NFT 관련 애니메이션 주소 | string | N |
mintMsg.metadata.youtubeUrl | 유투브 주소 | string | N |
mintMsg.metadata.imageData | NFT 이미지 정보 | string | N |
mintMsg.metadata.externalUrl | 외부로 연결되는 주소 | string | N |
mintMsg.metadata.backgroundColor | OpenSea에서 토큰의 배경색 정보 | string | N |
mintMsg.metadata.attributes | 메타데이터 속성 정보입니다. 메타데이터에 명시하지 않았던 부가적인 정보입니다. | json | N |
mintMsg.metadata.attributes.traitType | attributes를 구성하는 항목명입니다. | string | N |
mintMsg.metadata.attributes.maxValue | trait 최대값 | number | N |
mintMsg.metadata.attributes.value | trait값입니다. mintMsg.metadata.attributes.maxValue 보다 작아야 합니다. mintMsg.metadata.attributes.displayType 이 date이면 value에 unix timestamp (seconds)를 입력합니다. |
string 또는 number | N |
mintMsg.metadata.attributes.displayType | trait 노출 유형입니다. 기본값은 string 타입입니다.
|
string | N |
encoded | 반환받을 트랜잭션의 인코딩 여부
|
boolean | N |
Responses
필드명 | 설명 | 타입 |
---|---|---|
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.rawTx | 트랜잭션 데이터 | string 또는 json |
data.hashedTx | 해시한 data.rawTx 입니다. API 헤더 x-network 가 polygon이고 Request Body from 이 다중 서명 지갑 주소일 때에만 이 값을 받습니다. |
string |
data.requestId | API 요청을 식별할 수 있는 고유값 | string |
Request Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
curl -X 'POST' \ 'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/0xA3F4308Ed655f962dD7CA180545c21718fAE49AD/mint' \ -H 'accept: application/json' \ -H 'x-network: polygon' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' -H 'Content-Type: application/json' \ -d '{ "from": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765", "mintMsg": [ { "to": "0xFBd488D1b00604d3b05124d80E35FeA9A39C3296", "tokenId": "101", "metadata": { "name": "Arbiter'\''s Robe", "description": "desc", "image": "https://image01.c2x.world/equip_92053030.gif", "animationUrl": "https://image01.c2x.world/equip_92053030.gif", "externalUrl": "https://dex.c2xnft.com/market?key=4423", "attributes": [ { "traitType": "Category", "value": "Game", } ] }, "royaltyPercentage": 12 } ], "encoded": true }' |
Response Sample
1 2 3 4 5 6 7 8 9 |
{ "code": 0, "message": "success", "data": { "rawTx": "02f8f3830138810b8459682f008459682f1083023...", "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...", "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1" } } |
NFT 컨트랙트 배포
NFT 컨트랙트를 배포하는 트랜잭션을 생성합니다. 배포할 컨트랙트는 ERC-721/CW-721 표준을 지원하며 아래 확장 기능들도 지원합니다.
- Bulk Minting
- Royalty (ERC-2981/CW-2981)
Request URL
Live URL | https://bc-api.qpyou.cn/core/v1/nft/extension/contract |
---|---|
Sandbox URL | https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/contract |
HTTP Method | POST |
Content-Type | application/json |
Header Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request Body
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
from | NFT 컨트랙트를 배포하는 계정 지갑 주소 | string | Y |
name | NFT 컨트랙트 이름 | string | Y |
symbol | NFT 컨트랙트 심볼 | string | Y |
minter | NFT 컨트랙트에서 NFT를 발행할 수 있는 계정 지갑 주소 | string | Y |
encoded | 반환받을 트랜잭션의 인코딩 여부
|
boolean | N |
Responses
필드명 | 설명 | 타입 |
---|---|---|
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.rawTx | 트랜잭션 데이터 | string 또는 json |
data.hashedTx | 해시한 data.rawTx 입니다. API 헤더 x-network 가 polygon이고 Request Body from 이 다중 서명 지갑 주소일 때에만 이 값을 받습니다. |
string |
data.requestId | API 요청을 식별할 수 있는 고유값 | string |
Request Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 |
curl -X 'POST' \ 'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/contract' \ -H 'accept: application/json' \ -H 'x-network: polygon' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' -H 'Content-Type: application/json' \ -d '{ "encoded": true, "from": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765", "name": "Extension NFT", "symbol": "ENFT", "minter": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765" }' |
Response Sample
1 2 3 4 5 6 7 8 9 |
{ "code": 0, "message": "success", "data": { rawTx: "02f8f3830138810b8459682f008459682f108302...", "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...", "requestId": "6fu656d0-t52q-2bdc-ba93-dd063815s7e1" } } |