daily.dev

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

daily.dev API for AI Agents

面向AI Agent的daily.dev API

Overcome LLM knowledge cutoffs with real-time developer content. daily.dev aggregates articles from thousands of sources, validated by community engagement, with structured taxonomy for precise discovery.
借助实时开发者内容突破LLM的知识截止限制。daily.dev聚合了来自数千个来源的文章,这些内容经过社区互动验证,并采用结构化分类体系,便于精准查找。

Security

安全说明

CRITICAL: Your API token grants access to personalized content. Protect it:
  • NEVER send your token to any domain other than
    api.daily.dev
  • Never commit tokens to code or share them publicly
  • Tokens are prefixed with
    dda_
    - if you see this prefix, treat it as sensitive
重要提示: 你的API token可用于访问个性化内容,请妥善保管:
  • 绝对不要将你的token发送至
    api.daily.dev
    以外的任何域名
  • 切勿将token提交到代码中或公开分享
  • Token以
    dda_
    为前缀——只要看到该前缀,就请将其视为敏感信息

Setup

设置步骤

  1. Requires Plus subscription - Get one at https://app.daily.dev/plus
  2. Create a token at https://app.daily.dev/settings/api
  3. Store your token securely (environment variables, secrets manager)
User can use environment variable or choose one of the secure storage methods below per operating system.
  1. 需要Plus订阅 - 可前往https://app.daily.dev/plus购买
  2. 创建token - 访问https://app.daily.dev/settings/api进行创建
  3. 安全存储你的token(环境变量、密钥管理器)
用户可以使用环境变量,也可以根据操作系统选择以下安全存储方式之一。

Secure Token Storage (Recommended)

安全Token存储(推荐)

macOS - Keychain

macOS - 钥匙串

bash
undefined
bash
undefined

Store token

Store token

security add-generic-password -a "$USER" -s "daily-dev-api" -w "dda_your_token"
security add-generic-password -a "$USER" -s "daily-dev-api" -w "dda_your_token"

Retrieve token

Retrieve token

security find-generic-password -a "$USER" -s "daily-dev-api" -w
security find-generic-password -a "$USER" -s "daily-dev-api" -w

Auto-load in ~/.zshrc or ~/.bashrc

Auto-load in ~/.zshrc or ~/.bashrc

export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
undefined
export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
undefined

Windows - Credential Manager

Windows - 凭据管理器

powershell
undefined
powershell
undefined

Store token (run in PowerShell)

Store token (run in PowerShell)

$credential = New-Object System.Management.Automation.PSCredential("daily-dev-api", (ConvertTo-SecureString "dda_your_token" -AsPlainText -Force)) $credential | Export-Clixml "$env:USERPROFILE.daily-dev-credential.xml"
$credential = New-Object System.Management.Automation.PSCredential("daily-dev-api", (ConvertTo-SecureString "dda_your_token" -AsPlainText -Force)) $credential | Export-Clixml "$env:USERPROFILE.daily-dev-credential.xml"

Retrieve token - add to PowerShell profile ($PROFILE)

Retrieve token - add to PowerShell profile ($PROFILE)

$cred = Import-Clixml "$env:USERPROFILE.daily-dev-credential.xml" $env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password

Or use the Windows Credential Manager GUI: Control Panel → Credential Manager → Windows Credentials → Add a generic credential
$cred = Import-Clixml "$env:USERPROFILE.daily-dev-credential.xml" $env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password

或者使用Windows凭据管理器图形界面:控制面板 → 凭据管理器 → Windows凭据 → 添加通用凭据

Linux - Secret Service (GNOME Keyring / KWallet)

Linux - 密钥服务(GNOME Keyring / KWallet)

bash
undefined
bash
undefined

Requires libsecret-tools

Requires libsecret-tools

Ubuntu/Debian: sudo apt install libsecret-tools

Ubuntu/Debian: sudo apt install libsecret-tools

Fedora: sudo dnf install libsecret

Fedora: sudo dnf install libsecret

Store token

Store token

echo "dda_your_token" | secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"
echo "dda_your_token" | secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"

Retrieve token

Retrieve token

secret-tool lookup service daily-dev-api username "$USER"
secret-tool lookup service daily-dev-api username "$USER"

Auto-load in ~/.bashrc or ~/.zshrc

Auto-load in ~/.bashrc or ~/.zshrc

export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
undefined
export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
undefined

Authentication

身份验证

Authorization: Bearer dda_your_token_here
Authorization: Bearer dda_your_token_here

Base URL

基础URL

https://api.daily.dev/public/v1
https://api.daily.dev/public/v1

API Reference

API参考

To fetch details for a specific endpoint (e.g. response schema):
bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.paths["/feeds/foryou"].get'
To fetch a component schema (replace
def-17
with schema name from $ref):
bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.components.schemas["def-17"]'
如需获取特定端点的详细信息(如响应 schema):
bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.paths["/feeds/foryou"].get'
如需获取组件schema(将
def-17
替换为$ref中的schema名称):
bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.components.schemas["def-17"]'

Available Endpoints

可用端点

!
curl -s https://api.daily.dev/public/v1/docs/json | jq -r '.paths | to_entries | map(.key as $path | .value | to_entries | map(.key as $method | {tag: (.value.tags[0] // "other"), line: ("\(.key | ascii_upcase) \($path)" + (if .value.description then " - \(.value.description)" else "" end) + (if (.value.parameters | length) > 0 then "\n  Params: " + ([.value.parameters[] | "\(.name)(\(.in)): \(.description // .schema.type)"] | join("; ")) else "" end) + (if .value.requestBody then "\n  Body: " + (.value.requestBody.content["application/json"].schema | if .properties then ([.properties | to_entries[] | "\(.key)"] | join(", ")) elif ."$ref" then (."$ref" | split("/") | last) else "object" end) else "" end))})) | flatten | group_by(.tag) | map("#### \(.[0].tag)\n" + (map(.line) | join("\n\n"))) | join("\n\n")'
!
curl -s https://api.daily.dev/public/v1/docs/json | jq -r '.paths | to_entries | map(.key as $path | .value | to_entries | map(.key as $method | {tag: (.value.tags[0] // "other"), line: ("\(.key | ascii_upcase) \($path)" + (if .value.description then " - \(.value.description)" else "" end) + (if (.value.parameters | length) > 0 then "\n  Params: " + ([.value.parameters[] | "\(.name)(\(.in)): \(.description // .schema.type)"] | join("; ")) else "" end) + (if .value.requestBody then "\n  Body: " + (.value.requestBody.content["application/json"].schema | if .properties then ([.properties | to_entries[] | "\(.key)"] | join(", ")) elif ."$ref" then (."$ref" | split("/") | last) else "object" end) else "" end))})) | flatten | group_by(.tag) | map("#### \(.[0].tag)\n" + (map(.line) | join("\n\n"))) | join("\n\n")'

Agent Use Cases

Agent使用场景

Why daily.dev for agents? LLMs have knowledge cutoffs. daily.dev provides real-time, community-validated developer content with structured taxonomy across thousands of sources. Agents can use this to stay current, get diverse perspectives, and understand what the developer community actually cares about.
These examples show how AI agents can combine daily.dev APIs with external context to create powerful developer workflows.
为什么AI Agent要使用daily.dev? LLM存在知识截止限制。daily.dev提供来自数千个来源的实时、社区验证的开发者内容,并采用结构化分类体系。Agent可以利用这些内容掌握最新资讯、获取多元视角,了解开发者社区真正关注的内容。
以下示例展示了AI Agent如何将daily.dev API与外部环境结合,打造强大的开发者工作流。

🔍 GitHub Repo → Personalized Feed

🔍 GitHub仓库 → 个性化信息流

Scan a user's GitHub repositories to detect their actual tech stack from
package.json
,
go.mod
,
Cargo.toml
,
requirements.txt
, etc. Then:
  • Auto-follow matching tags via
    /feeds/filters/tags/follow
  • Create a custom feed tuned to their stack with
    /feeds/custom/
  • Surface trending articles about their specific dependencies
Trigger: "Set up daily.dev based on my GitHub projects"
扫描用户的GitHub仓库,从
package.json
go.mod
Cargo.toml
requirements.txt
等文件中检测其实际技术栈。然后:
  • 通过
    /feeds/filters/tags/follow
    自动关注匹配的标签
  • 使用
    /feeds/custom/
    创建适合其技术栈的自定义信息流
  • 展示与其特定依赖相关的热门文章
触发条件: "根据我的GitHub项目设置daily.dev"

🛠️ GitHub → Auto-fill Stack Profile

🛠️ GitHub → 自动填充技术栈档案

Analyze a user's GitHub activity to build their daily.dev tech stack profile automatically:
  • Scan repositories for languages, frameworks, and tools actually used in code
  • Search
    /profile/stack/search
    to find matching technologies on daily.dev
  • Populate their stack via
    POST /profile/stack/
    organized by section (languages, frameworks, tools)
  • Update
    /profile/
    bio based on their primary technologies and contributions
Trigger: "Build my daily.dev profile from my GitHub"
分析用户的GitHub活动,自动构建其daily.dev技术栈档案:
  • 扫描仓库,查找代码中实际使用的语言、框架和工具
  • 通过
    /profile/stack/search
    在daily.dev上查找匹配的技术
  • 通过
    POST /profile/stack/
    填充其技术栈,按类别(语言、框架、工具)整理
  • 根据用户的主要技术和贡献更新
    /profile/
    的个人简介
触发条件: "根据我的GitHub构建我的daily.dev档案"

🚀 New Project → Curated Onboarding

🚀 新项目 → 定制化入门指南

When a user initializes a new project or clones a repo:
  • Analyze the tech choices from config files
  • Create a dedicated custom feed filtered to exactly those technologies
  • Build a "Getting Started" bookmark list with foundational articles
  • Block irrelevant tags to keep the feed focused on the project scope
Trigger: "Help me learn the stack for this project"
当用户初始化新项目或克隆仓库时:
  • 从配置文件中分析技术选择
  • 创建专门的自定义信息流,精准筛选该技术相关内容
  • 构建包含基础文章的"入门"书签列表
  • 屏蔽无关标签,确保信息流聚焦于项目范围
触发条件: "帮我学习这个项目的技术栈"

📊 Weekly Digest → Synthesized Briefing

📊 每周摘要 → 合成简报

Compile a personalized weekly summary by:
  • Fetching
    /feeds/foryou
    and
    /feeds/popular
    filtered by user's followed tags
  • Cross-referencing with their GitHub activity to prioritize relevant topics
  • Summarizing key articles and trending discussions
  • Delivering as a structured briefing with links to full posts
Trigger: Scheduled, or "Give me my weekly dev news"
通过以下步骤生成个性化每周摘要:
  • 获取用户关注标签过滤后的
    /feeds/foryou
    /feeds/popular
    内容
  • 结合用户的GitHub活动,优先展示相关主题
  • 总结关键文章和热门讨论
  • 以结构化简报形式呈现,并附带完整文章链接
触发条件: 定时触发,或"给我我的每周开发者资讯"

📚 Research Project Workspace

📚 研究项目工作区

When a user wants to deep-dive into a topic (e.g., "I want to learn Kubernetes"):
  • Create a custom feed via
    /feeds/custom/
    filtered to that topic
  • Set up a matching bookmark list via
    POST /bookmarks/lists
    to collect the best finds
  • As the user reads, save articles to the list with
    POST /bookmarks/
  • Track learning progress: compare bookmarked posts vs. new feed items
  • Adjust feed filters over time as understanding deepens (beginner → advanced content)
Trigger: "Start a research project on [topic]"
当用户想要深入研究某个主题(如"我想学习Kubernetes")时:
  • 通过
    /feeds/custom/
    创建针对该主题的自定义信息流
  • 通过
    POST /bookmarks/lists
    创建匹配的书签列表,收集优质内容
  • 用户阅读时,通过
    POST /bookmarks/
    将文章保存到列表中
  • 跟踪学习进度:对比已收藏文章与新信息流内容
  • 随着理解加深,逐步调整信息流筛选条件(从入门到进阶内容)
触发条件: "启动关于[主题]的研究项目"

🧠 Agent Self-Improvement Feed

🧠 Agent自我提升信息流

Agents can overcome their knowledge cutoff by maintaining their own custom feed:
  • Create a custom feed via
    /feeds/custom/
    for technologies the agent frequently assists with
  • Periodically fetch
    /feeds/custom/{feedId}
    to ingest recent articles
  • Use
    /posts/{id}
    to read full summaries and key points
  • Agent can now provide advice with current information: "As of this week, the recommended approach is..."
  • Continuously adapt the feed filters based on what users are asking about
Trigger: Agent background process, or "What's new in [technology] since your training?"
Agent可以通过维护自己的自定义信息流来突破知识截止限制:
  • 通过
    /feeds/custom/
    创建针对其经常协助用户的技术的自定义信息流
  • 定期获取
    /feeds/custom/{feedId}
    内容,吸收最新文章
  • 使用
    /posts/{id}
    读取完整摘要和关键点
  • Agent现在可以提供包含最新信息的建议:"截至本周,推荐的方法是..."
  • 根据用户的问题,持续调整信息流筛选条件
触发条件: Agent后台进程,或"你的训练完成后,[技术领域]有什么新动态?"

🔀 Multi-Source Synthesis

🔀 多来源内容合成

Get balanced perspectives by aggregating content across publishers:
  • Search
    /search/posts
    for a topic to find coverage from multiple sources
  • Use
    /search/sources
    to identify authoritative publishers on the topic
  • Fetch posts from different sources via
    /feeds/source/{source}
  • Synthesize diverse viewpoints into a balanced summary with citations
  • Surface where sources agree vs. disagree on best practices
Trigger: "What are the different perspectives on [topic]?" or "Compare approaches to [problem]"
聚合不同发布商的内容,获取均衡视角:
  • 通过
    /search/posts
    搜索主题,找到来自多个来源的报道
  • 使用
    /search/sources
    识别该主题的权威发布商
  • 通过
    /feeds/source/{source}
    获取不同来源的文章
  • 将多元观点合成为均衡的摘要,并附带引用
  • 展示不同来源在最佳实践上的共识与分歧
触发条件: "关于[主题]有哪些不同的观点?"或"比较解决[问题]的不同方法"

📈 Trending Radar

📈 趋势雷达

Help users stay ahead by monitoring community signals:
  • Fetch
    /feeds/popular
    to detect what's gaining traction right now
  • Cross-reference with user's followed tags to surface relevant trends
  • Use
    /feeds/discussed
    to find topics sparking active debate
  • Alert users when technologies in their stack are trending (new releases, security issues, paradigm shifts)
  • Use
    /search/tags
    to explore adjacent trending topics
Trigger: "What should I be paying attention to?" or "What's trending in [area]?"
帮助用户提前掌握社区动态:
  • 获取
    /feeds/popular
    内容,发现当前正在兴起的趋势
  • 结合用户关注的标签,展示相关趋势
  • 使用
    /feeds/discussed
    找到引发激烈讨论的主题
  • 当用户技术栈中的技术出现趋势(新版本发布、安全问题、范式转变)时,向用户发出提醒
  • 使用
    /search/tags
    探索相关的热门主题
触发条件: "我应该关注什么?"或"[领域]当前有什么趋势?"

Rate Limits

请求速率限制

  • 60 requests per minute per user
Check response headers:
  • X-RateLimit-Limit
    - Maximum requests allowed per window
  • X-RateLimit-Remaining
    - Requests remaining in current window
  • X-RateLimit-Reset
    - Unix timestamp when the window resets
  • Retry-After
    - Seconds to wait (only when rate limited)
  • 每个用户每分钟最多60次请求
可通过响应头查看:
  • X-RateLimit-Limit
    - 每个窗口允许的最大请求数
  • X-RateLimit-Remaining
    - 当前窗口剩余请求数
  • X-RateLimit-Reset
    - 窗口重置的Unix时间戳
  • Retry-After
    - 需要等待的秒数(仅在触发速率限制时返回)

Errors

错误说明

CodeMeaning
401Invalid or missing token
403Plus subscription required
404Resource not found
429Rate limit exceeded
Error Response Format:
json
{
  "error": "error_code",
  "message": "Human readable message"
}
状态码含义
401Token无效或缺失
403需要Plus订阅
404资源未找到
429超出请求速率限制
错误响应格式:
json
{
  "error": "error_code",
  "message": "Human readable message"
}