luxy APIluxy.ink ↗
Retrieve full article content and browse posts from the luxy.ink technical blog. Filter by category, paginate results, and search across Linux, Docker, Kubernetes topics.
What is the luxy API?
The luxy.ink API provides access to technical articles from 小橘子大叔's blog through 2 endpoints, returning up to 10 fields per article including full HTML content, publication dates, category associations, and tag IDs. The get_article endpoint fetches a complete post by numeric ID, while list_articles supports paginated browsing, category filtering, and full-text search across the archive.
curl -X GET 'https://api.parse.bot/scraper/be119d5a-5040-49c9-9871-d8e3bc48da5d/get_article?post_id=1101' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace luxy-ink-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Luxy.ink Blog API — browse articles and fetch full content."""
from parse_apis.luxy_ink_api import LuxyInk, InputNotFound
client = LuxyInk()
# Browse recent articles with pagination, capped at 5 total items.
for summary in client.article_summaries.list(limit=5):
print(summary.title, summary.date)
# Search for a topic and drill into the first result's full content.
hit = client.article_summaries.list(search="docker", limit=1).first()
if hit is not None:
article = hit.details()
print(article.title)
print(article.content_html[:200])
print("categories:", article.categories)
# Point lookup by a known ID discovered from the search above.
if hit is not None:
try:
full = client.articles.get(post_id=str(hit.id))
print(full.title, full.link)
except InputNotFound:
print("article not found")
print("exercised: article_summaries.list / details / articles.get")
Get the full content of a single article by its numeric post ID. Returns the complete HTML content, title, metadata, and category/tag associations. The post_id can be obtained from the list_articles endpoint.
| Param | Type | Description |
|---|---|---|
| post_idrequired | string | Numeric post ID (e.g. 1101). Obtain from list_articles results. |
{
"type": "object",
"fields": {
"id": "integer — unique post identifier",
"date": "string — publication date in ISO 8601 format",
"link": "string — canonical permalink URL",
"slug": "string — URL slug",
"tags": "array of integer tag IDs",
"title": "string — article title",
"modified": "string — last modified date in ISO 8601 format",
"author_id": "integer — author user ID",
"categories": "array of integer category IDs",
"content_html": "string — full article content as HTML",
"excerpt_html": "string — short excerpt as HTML",
"comment_status": "string — whether comments are open or closed",
"featured_media": "integer — featured image attachment ID (0 if none)"
},
"sample": {
"data": {
"id": 1101,
"date": "2026-06-18T15:42:58",
"link": "https://luxy.ink/2026/06/18/...",
"slug": "%e7%a0%b4%e8%a7%a3%e5%ae%b9%e5%99%a8%e8%b5%84%e6%ba%90%e5%b9%bb%e8%a7%89%ef%bc%9a%e6%b5%85%e6%9e%90-lxcfs-%e6%a0%b8%e5%bf%83%e5%8e%9f%e7%90%86%e4%b8%8e%e9%81%bf%e5%9d%91%e6%8c%87%e5%8d%97",
"tags": [],
"title": "破解容器资源幻觉:浅析 LXCFS 核心原碐与避坑指南",
"modified": "2026-06-18T15:42:58",
"author_id": 1,
"categories": [
6
],
"content_html": "<p>在容器化技术的落地过程中...</p>",
"excerpt_html": "<p>在容器化技术... […]</p>\n",
"comment_status": "open",
"featured_media": 0
},
"status": "success"
}
}About the luxy API
Endpoints and Data Coverage
The API exposes two endpoints. get_article accepts a post_id (numeric string, e.g. 1101) and returns the full article record: id, title, slug, link, date, modified, author_id, categories (array of integer IDs), tags (array of integer IDs), and content_html — the complete article body as raw HTML. This is the only endpoint that returns full content.
Browsing and Filtering with list_articles
list_articles returns paginated article summaries ordered by publication date descending. Each summary includes id, title, slug, date, excerpt_html, link, categories, and tags — but not the full content_html. Use the page and per_page params (1–100 per page) to paginate. Pass a category param with a known integer ID to filter by topic: 6 for Docker, 7 for Linux, 8 for Nginx, 14 for 生活 (life/personal), 15 for Kubernetes. A search param runs full-text queries against the archive. The response envelope includes total, total_pages, page, and per_page for cursor management.
Typical Workflow
Call list_articles first to discover article IDs — filtering by category or search to narrow scope — then pass a returned id to get_article to retrieve content_html and the full metadata record. Category and tag IDs are integers in both endpoints; the API does not resolve them to label strings, so cross-reference against the known category map provided in the list_articles parameter documentation.
The luxy API is a managed, monitored endpoint for luxy.ink — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when luxy.ink changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official luxy.ink API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Index luxy.ink technical posts by category (e.g. Kubernetes ID 15) to build a topic-specific reading feed
- Full-text search across the blog archive using the
searchparam to find articles on specific tools or configurations - Retrieve
content_htmlfromget_articleto extract code snippets and commands from Linux or Docker tutorials - Track content freshness by comparing
dateandmodifiedfields on articles retrieved viaget_article - Build a paginated archive browser using
total_pagesandper_pagefromlist_articlesresponse metadata - Aggregate tag and category co-occurrence across articles by collecting
tagsandcategoriesarrays fromlist_articlesresults
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does luxy.ink have an official developer API?+
What does get_article return that list_articles does not?+
get_article returns the full content_html field — the complete article body as HTML — along with author_id and modified date. list_articles returns only excerpt_html summaries and omits content_html, author_id, and modified. To read full article text you must call get_article with a specific post_id.Does list_articles resolve category and tag IDs to human-readable names?+
categories and tags as arrays of integers. The known category mappings are documented in the list_articles parameter description (e.g. 6 = docker, 7 = Linux, 15 = Kubernetes), but tag labels are not resolved. The API covers category-based filtering by ID. You can fork it on Parse and revise it to add a taxonomy endpoint that resolves tag and category IDs to their string labels.Are there any content areas of the blog that the API does not currently cover?+
How should I handle pagination when browsing the full archive?+
list_articles with page=1 and your desired per_page value (up to 100). The response includes total_pages and total so you can iterate through subsequent pages. Results are always ordered by publication date descending, and there is no cursor-based pagination — page numbers are the only navigation mechanism.