Overview

The Credential API provides read-only access to verify user eligibility and query credential information.

Core Queries

Get Credential Information

query GetCredential($credId: ID!) {
  credential(id: $credId) {
    id
    name
    description
    credType
    credSource
    chain
    referenceLink
    itemCount
    lastUpdate
    lastSync
    syncStatus
    curatorSpace {
      id
      name
    }
  }
}

Check User Eligibility

query CheckEligibility($credId: ID!, $address: String!, $campaignId: ID) {
  credential(id: $credId) {
    id
    name
    eligible(address: $address, campaignId: $campaignId)
    credType
    credSource
    syncStatus
    lastSync
  }
}

Variables:

{
  "credId": "312969464",
  "address": "0x1234567890123456789012345678901234567890",
  "campaignId": "GChdWUjXX3"
}

Response:

{
  "data": {
    "credential": {
      "id": "312969464",
      "name": "Twitter Follower Verification",
      "eligible": 1,
      "credType": "TWITTER",
      "credSource": "TWITTER_FOLLOW",
      "syncStatus": "SYNCED",
      "lastSync": 1699200000
    }
  }
}

Eligibility Values:

  • 1 - User has the credential
  • 0 - User does not have the credential

Field Reference

Key Fields

FieldTypeDescription
idID!Credential’s unique identifier
nameString!Human-readable credential name
credTypeCredType!Credential platform/type
credSourceCredSource!Verification method
eligible(address, campaignId)IntUser eligibility check (0 or 1)
syncStatusSyncStatus!Data synchronization status
itemCountIntTotal number of credential holders

Credential Types

TypeDescription
TWITTERTwitter account verification
DISCORDDiscord membership verification
EVM_ADDRESSEthereum-compatible addresses
SOLANA_ADDRESSSolana wallet addresses
GITHUBGitHub account verification
EMAILEmail address verification

Credential Sources

SourceDescription
TWITTER_FOLLOWTwitter follow verification
DISCORD_MEMBERDiscord server membership
CONTRACT_NFT_HOLDERNFT ownership verification
WALLET_BALANCEToken balance requirements
QUIZQuiz completion verification
APICustom API verification

Sync Status

StatusDescription
SYNCEDData is current and reliable
SYNCINGData is being updated, may be stale

Integration Patterns

Basic Verification

curl -X POST https://graphigo-business.prd.galaxy.eco/query \
  -H "Content-Type: application/json" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -d '{
    "query": "query CheckEligibility($credId: ID!, $address: String!) { credential(id: $credId) { name eligible(address: $address) syncStatus } }",
    "variables": { "credId": "312969464", "address": "0x..." }
  }'

Quest-Specific Context

When checking eligibility for a specific quest, include the campaignId parameter:

eligible(address: $address, campaignId: $campaignId)

Best Practices

  1. Check Sync Status: Always verify syncStatus is SYNCED before relying on eligibility results
  2. Handle Quest Context: Use campaignId parameter for quest-specific verifications
  3. Cache Results: Cache eligibility results for 5-10 minutes to reduce API calls
  4. Error Handling: Handle invalid credential IDs and network errors gracefully

Common Errors

ErrorCauseSolution
Credential not foundInvalid credential IDVerify credential ID exists
Address not providedMissing address parameterInclude user address in query
Rate limit exceededToo many requestsImplement retry logic
Invalid access tokenBad/expired tokenRegenerate access token

Next Steps