Windsurf API
Read public article listings and article details from the blog currently reached by windsurf.com/blog. The source URL presently redirects to devin.ai/blog; pagination follows the source's page links, and article detail includes the source-published text.
Endpoint health
Loading verification…
Connect your agent
Connect through MCP so your agent can find this API, read its docs, and call its endpoints.
Add the server from your terminal.
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcpIn Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.
Then ask your agent to use the Windsurf API for your task.
Call it over HTTP
Get an API keySign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.
curl --request GET --get 'https://api.agent-data.dev/windsurf-com/v1/articles' \
--header "Authorization: Bearer $AGENT_DATA_API_KEY"Endpoints
Inputs and response fields for every endpoint in this API.
GETArticles/v1/articles
Returns the source's current article-card page and a source-derived next_cursor. Pass the cursor unchanged to browse older posts; the source URL currently redirects to Devin.
Input
cursorOptionalQuery · string | nullSource page token. Omit for the newest page; otherwise pass next_cursor unchanged.
Response
pageintegeritemsobject[]items[].titlestringitems[].authors?string[]items[].summary?string | nullitems[].full_text?string | nullitems[].source_idstringitems[].categories?string[]items[].update_date?string (date) | nullitems[].canonical_urlstringitems[].publication_date?string (date) | nullhas_morebooleantransportstringnext_cursorstring | nulltotal_pagesintegerFields marked ? are optional.
For the next page, pass next_cursor from the response as cursor. Leave it empty on the first call.
GETArticles by url/v1/articles/by-url
Accepts an HTTPS article URL on the observed Windsurf/Devin blog hosts and returns its canonical article record.
Input
urlRequiredQuery · stringCanonical article URL returned by the listing, or its official Windsurf blog URL.
Example: https://devin.ai/blog/gpt-6-sol-luna
Response
titlestringauthors?string[]summary?string | nullfull_text?string | nullsource_idstringtransportstringcategories?string[]update_date?string (date) | nullcanonical_urlstringpublication_date?string (date) | nullFields marked ? are optional.
GETArticles by article id/v1/articles/{article_id}
Fetches the public article whose source ID is the slug in its canonical blog URL.
Input
article_idRequiredPath · stringSource article slug from the listing item's source_id.
Example: gpt-6-sol-luna
Response
titlestringauthors?string[]summary?string | nullfull_text?string | nullsource_idstringtransportstringcategories?string[]update_date?string (date) | nullcanonical_urlstringpublication_date?string (date) | nullFields marked ? are optional.
Don’t see the endpoint you need?
Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.
An account is required to submit an extension. Prepare your request, then sign in to build.