# Auctions

**URL:** https://heroiclabs.com/docs/hiro/unreal/auctions/
**Keywords:** auctions, hiro
**Categories:** hiro, unreal, auctions

---


# Auctions

Read more about the Auctions system in Hiro [here](../../concepts/auctions/).

## Creating a New Auction

To create a new auction, use the `AuctionsCreate` function.

```cpp
FHiroAuctionCreateRequest Request;
Request.TemplateId = TEXT("template_auction_001");
Request.ConditionId = TEXT("condition_001");
Request.InstanceIds.Add(TEXT("item_instance_001", 1));

FHiroOnAuctionsCreate OnAuctionsCreate;
OnAuctionsCreate.AddDynamic(this, &AMyActor::OnAuctionsCreate);
FOnError OnError;

HiroClient->AuctionsCreate(Session, Request, OnAuctionsCreate, OnError);

void AMyActor::OnAuctionsCreate(const FHiroAuctionCreateRequest& AuctionCreateRequest)
{
    UE_LOG(LogTemp, Log, TEXT("%s"), *AuctionCreateRequest.ToJson());
}
```

## Placing a Bid on an Auction

You can place a bid on an auction using the `BidAsync` function.

```cpp
FHiroAuctionBidRequest Request;
Request.Id = TEXT("auction_instance_123");
Request.Version = TEXT("1.0");
Request.Bid.Currencies.Add(TEXT("gold", 1000));

FHiroOnAuctionsBid OnAuctionsBid;
OnAuctionsBid.AddDynamic(this, &AMyActor::OnAuctionsBid);
FOnError OnError;

HiroClient->AuctionsBid(Session, Request, OnAuctionsBid, OnError);

void AMyActor::OnAuctionsBid(const FHiroAuctionBidRequest& AuctionsBidRequest)
{
    UE_LOG(LogTemp, Log, TEXT("%s"), *AuctionsBidRequest.ToJson());
}
```

## Canceling an Auction

If an auction needs to be canceled before it ends, the `CancelAsync` method can be used.

```cpp
FHiroAuctionsCancelRequest Request;
Request.Id = TEXT("auction_instance_123");

FHiroOnAuctionsCancel OnAuctionsCancel;
OnAuctionsCancel.AddDynamic(this, &AMyActor::OnAuctionsCancel);
FOnError OnError;

HiroClient->AuctionsCancel(Session, Request, OnAuctionsCancel, OnError);

void AMyActor::OnAuctionsCancel(const AuctionsCancelRequest& AuctionsCancelRequest)
{
    UE_LOG(LogTemp, Log, TEXT("%s"), *AuctionCreateRequest.ToJson());
}
```

## Claiming a Winning Bid

Once an auction has ended, the winning bidder can claim their item using `ClaimBidAsync`.

```cpp
FHiroAuctionClaimBidRequest Request;
Request.Id = TEXT("auction_instance_123");

FHiroOnAuctionsClaimBid OnAuctionsClaimBid;
OnAuctionsClaimBid.AddDynamic(this, &AMyActor::OnAuctionsClaimBid);
FOnError OnError;

HiroClient->AuctionsClaimBid(Session, Request, OnAuctionsClaimBid, OnError);

void AMyActor::OnAuctionsClaimBid(const FHiroAuctionClaimBidRequest& AuctionsClaimBidRequest)
{
    UE_LOG(LogTemp, Log, TEXT("%s"), *AuctionsClaimBidRequest.ToJson());
}
```

## Listing Available Auctions

You can list the currently available auctions using the `ListAsync` function.

```cpp
FHiroAuctionListRequest Request;

FHiroOnAuctionsList OnAuctionsList;
OnAuctionsList.AddDynamic(this, &AMyActor::OnAuctionsList);
FOnError OnError;

HiroClient->AuctionsList(Session, Request, OnAuctionsList, OnError);

void AMyActor::OnAuctionsList(const FHiroAuctionListRequest& AuctionsListRequest)
{
    UE_LOG(LogTemp, Log, TEXT("%s"), *AuctionsListRequest.ToJson());
}
```
