docsv2
  • Introduction
  • Concepts
  • Getting started
  • Quest Management
    • Creating your community on Domino
    • Launching your first quest
    • Creating custom quest tasks
  • Viewing quest claims (submissions)
  • Using custom rewards
  • Understanding the task verification automation
  • Restricting quest access to Discord role
  • Domino Portal
    • Setting up the portal
    • Customizing the portal
    • Managing portal quests
    • Creating leaderboards
  • Developer Resources
    • Authenticating users with the portal API
    • Embedding the portal in Telegram Mini Apps
  • Checking claim status
  • Getting quest modules
  • Claiming a quest
Powered by GitBook
On this page
  • Overview
  • How It Works
  • API Reference
  • Usage Examples

Checking claim status

Overview

The Check Quest Claim endpoint allows you to verify whether a specific user has claimed a particular quest. This is useful for:

  • Preventing duplicate quest completions

  • Validating eligibility for rewards

  • Tracking user progress through quest journeys

How It Works

The endpoint accepts a quest ID and user identifiers, then:

  1. Locates the user based on the provided identifiers

  2. Checks if that user has claimed the specified quest

  3. Returns the claim status and relevant user/quest details

API Reference

POST /api/quests/check-claim

Request Parameters

Parameter
Type
Description

questId

String

Required. The ID of the quest to check

You must also include at least one of the following user identifiers:

Parameter
Type
Description

externalId

String

User's ID in your external system

discordId

String

User's Discord ID

twitterId

String

User's Twitter/X ID

telegramId

String

User's Telegram ID

zealyUserId

String

User's Zealy ID

wallet

Object

User's wallet information (see below)

The wallet object can include:

{
  "walletAddress": "0x123...",
  "type": "ethereum",
  "network": "mainnet",
  "provider": "metamask"
}

Response

User Found, Quest Exists

{
  "claimed": true, // or false
  "user": {
    "id": "user-id",
    "externalId": "external-id-if-exists"
  },
  "quest": {
    "id": "quest-id",
    "title": "Quest Title"
  }
}

User Found, Quest Not Found

{
  "claimed": false,
  "reason": "Quest not found",
  "user": {
    "id": "user-id",
    "externalId": "external-id-if-exists"
  }
}

User Not Found

{
  "claimed": false,
  "reason": "User not found"
}

Example Request

const response = await fetch('https://your-community.getdomino.app/api/quests/check-claim', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'your-domino-api-key'
  },
  body: JSON.stringify({
    questId: 'quest-123',
    externalId: 'user-456'
  })
});

const data = await response.json();
const hasClaimed = data.claimed;

Usage Examples

Checking Before Showing Quest Content

// Check if user has already claimed this quest
const checkResponse = await checkQuestClaim({ 
  questId: 'quest-123', 
  externalId: 'user-456' 
});

if (checkResponse.claimed) {
  // Show "already completed" message
  showCompletedMessage();
} else {
  // Show quest content
  showQuestContent();
}
PreviousEmbedding the portal in Telegram Mini AppsNextGetting quest modules

Last updated 14 days ago