Surf
Compliance Checks
2 issues
- 402 response missing Cache-Control: no-store
- POST endpoint challenge missing digest parameter (SHOULD per spec)
Paid Operations (14)
POST /api/v1/twitter/search 0.005 USDC.e
Search Twitter with advanced operators. Returns ~20 tweets per page with engagement summary. Use cursor for pagination.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| cursor | string | No | Pagination cursor |
| end_date | string | No | Only tweets before this date (YYYY-MM-DD) |
| query | string | Yes | Search query with advanced operators |
| sort | string | No |
Sort order
enum: Latest, Top default: Latest
|
| start_date | string | No | Only tweets on or after this date (YYYY-MM-DD) |
POST /api/v1/twitter/tweet 0.005 USDC.e
Fetch a tweet with full thread context (all conversation participants), parent tweet, and optionally replies/quotes. Each section returns ~20 items per upstream page with pagination cursors.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| include | array | No | Optional data to include |
| ref | string | Yes | Tweet ID or URL |
POST /api/v1/twitter/user 0.005 USDC.e
Fetch a user profile with ~20 recent tweets per page. Use cursor for pagination. Optionally include replies in timeline and mentions.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| cursor | string | No | Pagination cursor from next_cursor |
| include_mentions | boolean | No | Include mentions timeline |
| include_replies | boolean | No | Include replies |
| ref | string | Yes | Username or @username |
POST /api/v1/reddit/search 0.005 USDC.e
Search posts across Reddit with sort and time filters.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| cursor | string | No | Pagination cursor |
| end_date | string | No | Only posts before this date (YYYY-MM-DD) |
| limit | integer | No |
Max results
default: 25
|
| query | string | Yes | Search query |
| sort | string | No |
Sort order
enum: relevance, hot, top, new, comments default: relevance
|
| start_date | string | No | Only posts on or after this date (YYYY-MM-DD) |
| time | string | No |
Time range
enum: hour, day, week, month, year, all default: all
|
POST /api/v1/reddit/post 0.005 USDC.e
Fetch a Reddit post with comments, depth/sort control.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| comment_depth | integer | No |
Max nesting depth
default: 5
|
| comment_limit | integer | No |
Max comments
default: 50
|
| comment_sort | string | No |
Comment sort
enum: confidence, top, new, controversial, old, qa default: confidence
|
| ref | string | Yes | Post ID or Reddit URL |
POST /api/v1/reddit/subreddit 0.005 USDC.e
Fetch subreddit info and top posts.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| limit | integer | No |
Max posts
default: 25
|
| name | string | Yes | Subreddit name |
| sort | string | No |
Post sort
enum: hot, new, top, rising default: hot
|
| time | string | No |
Time range
enum: hour, day, week, month, year, all default: day
|
POST /api/v1/reddit/user 0.005 USDC.e
Fetch a Reddit user profile with recent posts and comments.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| include_comments | boolean | No | Include recent comments |
| include_posts | boolean | No |
Include recent posts
default: true
|
| max_results | integer | No |
Max posts/comments
default: 25
|
| ref | string | Yes | Reddit username |
POST /api/v1/web/search 0.01 USDC.e
Search the web using Exa. Returns titles, URLs, and snippets.
- Amount
- 0.01 (raw 10000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.01 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| category | string | No |
Filter by content category
enum: company, research paper, news, pdf, github, tweet, personal site, linkedin profile |
| end_published_date | string | No | Only before ISO date |
| exclude_domains | array | No | Exclude domains |
| include_domains | array | No | Restrict to domains |
| query | string | Yes | Search query |
| start_published_date | string | No | Only after ISO date |
| type | string | No |
Search depth
enum: auto, fast default: auto
|
POST /api/v1/web/crawl 0.002 USDC.e
Extract content from a web page as markdown, HTML, text, or JSON.
- Amount
- 0.002 (raw 2000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.002 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| force_browser | boolean | No | Skip HTTP tier, use browser rendering directly |
| format | string | No |
Output format (json returns structured SSR data when available)
enum: markdown, html, text, json default: markdown
|
| proxy | boolean | No | Use proxy |
| raw_ssr_data | boolean | No | Return raw SSR JSON payload (e.g. __NEXT_DATA__) without processing |
| selector | string | No | CSS selector |
| url | string | Yes | URL to crawl |
| wait_selector | string | No | CSS selector to wait for in browser tier (skips HTTP probe) |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| content | array[string] | - |
| status | integer | - |
| url | string | - |
POST /api/v1/github/search 0.002 USDC.e
Search GitHub repositories and conversations (issues + PRs). Supports GitHub search syntax.
- Amount
- 0.002 (raw 2000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.002 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| kind | string | No |
What to search: repos or conversations (issues+PRs)
enum: repos, conversations default: repos
|
| page | integer | No |
Page number
default: 1
|
| per_page | integer | No |
Results per page
default: 20
|
| query | string | Yes | Search query (supports GitHub search syntax) |
POST /api/v1/github/get 0.002 USDC.e
Fetch repository data: metadata, readme, files, tree, commits, branches, releases, PRs, or issues.
- Amount
- 0.002 (raw 2000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.002 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| kind | string | Yes |
What to fetch
enum: repo, readme, file, tree, commits, branches, releases, pr, issue |
| number | integer | No | PR or issue number (required for kind=pr|issue) |
| owner | string | Yes | Repository owner |
| page | integer | No |
Page number for paginated results
default: 1
|
| path | string | No | File path (required for kind=file) |
| per_page | integer | No |
Results per page
default: 30
|
| ref | string | No | Branch, tag, or commit SHA |
| repo | string | Yes | Repository name |
POST /api/v1/github/snapshot 0.005 USDC.e
Generate or retrieve a downloadable repository snapshot bundle. Returns cached by default (free). Set refresh=true to trigger new build (paid). Pass job_id to poll status.
- Amount
- 0.005 (raw 5000)
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
price: 0.005 pricingMode: fixed protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| job_id | string | No | Job ID to poll build status |
| owner | string | Yes | Repository owner |
| ref | string | No | Branch or tag (default: repo default branch) |
| refresh | boolean | No | Set true to trigger a new snapshot build (paid) |
| repo | string | Yes | Repository name |
POST /api/v1/inference/v1/chat/completions dynamic USDC.e
OpenAI-compatible chat completion endpoint. Supports streaming via SSE. Dynamic pricing based on model and token usage.
- Amount
- dynamic
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
pricingMode: quote protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| max_completion_tokens | No | Max completion tokens (preferred over max_tokens) | |
| max_tokens | No | Max tokens to generate | |
| messages | array | Yes | Chat messages |
| model | string | Yes | Model identifier |
| stream | boolean | No | Enable SSE streaming |
| temperature | No | Sampling temperature (0-2) | |
| tools | array | No | Tool definitions |
| top_p | No | Nucleus sampling |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| choices | array[object] | - |
| created | integer | - |
| id | string | - |
| model | string | - |
| object | string | - |
| usage | object | - |
POST /api/v1/inference/v1/messages dynamic USDC.e
Anthropic Messages API compatible endpoint. Translates to OpenAI format internally, routes through OpenRouter. Supports streaming via SSE.
- Amount
- dynamic
- Currency
- USDC.e
- Method
- tempo
- Intent
- charge
- 402 Declared
- Yes
pricingMode: quote protocols: [x402 mpp]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| max_tokens | integer | Yes | Maximum tokens to generate |
| messages | array | Yes | Conversation messages |
| model | string | Yes | Model identifier |
| stop_sequences | array | No | Custom stop sequences |
| stream | boolean | No | Enable SSE streaming |
| system | No | System prompt | |
| temperature | No | Sampling temperature (0-1) | |
| tool_choice | No | Tool selection mode | |
| tools | array | No | Tool definitions |
| top_k | No | Top-K sampling | |
| top_p | No | Nucleus sampling |
Payment Methods
- Methods
- tempo
- Intents
- charge
- Currencies (discovery)
- USDC.e
- Currency (challenge)
- USDC.e on Tempo (Tempo)
- Multiple Challenges
- Yes
Recipients
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
Per-endpoint breakdown
- POST /api/v1/reddit/post
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
- POST /api/v1/reddit/search
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
- POST /api/v1/reddit/subreddit
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
- POST /api/v1/twitter/search
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
- POST /api/v1/twitter/tweet
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
- POST /api/v1/twitter/user
- 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- Yes
- Challenge ID Length
- 43
- Digest Binding
- -
Uptime
- Discovery
- Reachable (65ms)
- Challenge
- Reachable (60ms)
- Last Checked
Schema Completeness
- Paid Operations
- 14
- With Input Schema
- 14
- With Description
- 14
Documentation
- Homepage
- https://surf.cascade.fyi
- API Reference
- https://surf.cascade.fyi/openapi.json
- llms.txt
- https://surf.cascade.fyi/llms.txt reachable
Discovery
- OpenAPI URL
- https://surf.cascade.fyi/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 1.0.0
- Document Size
- 29020 bytes
- Document Hash
- a3290e59b592611db0dd2b459f8c7ec298c0ac192948ddd83a648543c2eb5cb9
Version History (2 snapshots)
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-04-06 | A | 90% | 389ms | Up |
| 2026-04-07 | A | 90% | 136ms | Up |