SDK API ReferenceTypes & Interfaces

Types & Interfaces

TypeScript type definitions for EarnLayer SDK.

DisplayAd

interface DisplayAd {
  id: string;
  impressionId: string;
  title: string;
  description?: string;
  url: string;
  imageUrl?: string;
  adType: 'hyperlink' | 'thinking' | 'banner';
  source: 'queue' | 'fallback';
}

Important: Always use ad.url directly - it includes backend redirect for automatic tracking.


Conversation

interface Conversation {
  conversation_id: string;
  creator_id: string;
  ad_settings: object;
  status: string;
  created_at: string;
}

EarnLayerConfig

interface EarnLayerConfig {
  proxyBaseUrl?: string;
  debug?: boolean;
}

UseDisplayAdOptions

interface UseDisplayAdOptions {
  adType?: 'hyperlink' | 'thinking' | 'banner';
  autoFetch?: boolean;
  debug?: boolean;
  onAdFetched?: (ad: DisplayAd) => void;
  onError?: (error: Error) => void;
}

InitializeConversationOptions

interface InitializeConversationOptions {
  visitorId?: string;
  adTypes?: ('hyperlink' | 'thinking' | 'banner')[];
  frequency?: 'low' | 'normal' | 'high';
  demoMode?: boolean;
}

Field Descriptions:

  • visitorId - Custom visitor ID for tracking
  • adTypes - Types of ads to enable (['hyperlink', 'thinking', 'banner'] by default)
  • frequency - Ad frequency setting ('normal' by default)
  • demoMode - When true, shows all demo ads regardless of partnerships setup. Use for testing only. (false by default)

Note: SDK uses camelCase (demoMode) in TypeScript/JavaScript. MCP headers use snake_case (x-demo-mode) but that’s handled internally.


ConfirmImpressionsResult

interface ConfirmImpressionsResult {
  confirmed_count: number;
  impression_ids: string[];
}

Next Steps