Publishing
API Reference
If you can't use the SDK or prefer to make direct HTTP requests, you can interact with the Specify API directly.
API Endpoint
Authentication
Headers
Header | Value | Required |
---|---|---|
|
| Yes |
| Your publisher key (starts with | Yes |
Publisher Key Format
Must start with
spk_
Must be exactly 34 characters long
Example:
spk_1234567890abcdef1234567890abcdef
Request Format
Request Body
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
|
| Yes | Array of Ethereum wallet addresses (1-50 addresses) |
|
| Yes | Image format required for placement. Will match best ad with supported image format. See below for all formats. |
adUnitId | string | No | Id used to identify individual ad placements / units. Useful for performance analytics. |
Image Formats
Format | Aspect Ratio | Resolution | Use Case |
---|---|---|---|
| 16:9 | 640x360 | Hero banners, featured placements |
| 8:1 | 728x90 | Header/footer placements, leaderboards |
| 16:5 | 320x100 | Inline content, sidebars, mobile banners |
Wallet Address Validation
Must be valid Ethereum/EVM-compatible addresses
Must start with
0x
followed by 40 hexadecimal charactersCase-insensitive
Example:
0x742d35Cc6634C0532925a3b8D57C11E4a3e1A510
Response Format
Returned Data (200)
Property | Type | Description |
---|---|---|
walletAddress | string | The wallet address that matched for this ad |
campaignId | string | Unique identifier for the ad campaign |
adId | string | Unique identifier for this specific ad |
headline | string (no markdown) | Ad headline text |
content | string (markdown) less than 400 characters | Ad content with Markdown formatting (see Content Formatting section) |
ctaUrl | string | Call-to-action URL |
ctaLabel | string (no markdown) | Call-to-action button text |
imageUrl | string | URL to the ad image |
communityName | string (no markdown) | Name of the advertising community |
communityLogo | string | URL to the community logo |
imageFormat | string | The requested image format ( |
Content Formatting
The content
field in ad responses uses simplified Markdown formatting:
Format | Syntax | Example |
---|---|---|
Bold text |
|
|
|
|
|
Line breaks |
|
|
Underlined Text |
|
|
Italic Text |
|
|
Success Response (200)
Error Response (4xx/5xx)
HTTP Status Codes
Code | Description |
---|---|
| Success - Returns ad content |
| Bad Request - Invalid input data |
| Unauthorized - Invalid API key |
| Not Found - No ad available for the wallet address(es) |
| Internal Server Error |
Usage Examples
cURL
JavaScript (Fetch API)
Python (requests)
PHP
Go
Multiple Wallet Addresses
You can send multiple wallet addresses in a single request (maximum 50 addresses):
The API will return a single ad that best matches the provided wallet addresses. To be used for one user with multiple wallets
Rate Limits
Maximum 50 wallet addresses per request
Duplicate addresses are automatically removed
Contact support if you need higher rate limits
Schedule a call with us
Any other questions? Email us