LinkArtemis API

The LinkArtemis API lets you fetch your completed articles programmatically and push them into any CMS, website builder, or custom app including Lovable, Webflow, Framer, or anything you've built yourself.


Step 1: Get your API key

  1. In your workspace, go to Integrations
  2. Click the API card, then Manage
  3. Click Generate new key
  4. Give it a descriptive name
  5. Click Generate
  6. Copy the key immediately, it looks like this:
la_live_AbCdEfGhIjKlMnOpQrStUvWxYz012345678901234

Important: The full key is only shown once. We never store it in plain text. If you lose it, revoke it and generate a new one.


Step 2: Make your first request

Pass your key on every request using the X-API-Key  header:

curl https://app.linkartemis.com/api/v1/articles \
  -H "X-API-Key: la_live_your_key_here"

Or use Authorization: Bearer  if your HTTP client prefers it:

curl https://app.linkartemis.com/api/v1/articles \
  -H "Authorization: Bearer la_live_your_key_here"

Your key is tied to your workspace, every response is automatically scoped to your articles only.


Endpoints

List articles

GET https://app.linkartemis.com/api/v1/articles

Returns a paginated list of your completed articles, newest first.

Query parameters:

Parameter Default Max Description
limit
20
100
How many articles to return
offset
0
How many to skip (for paging)

Example:

curl "https://app.linkartemis.com/api/v1/articles?limit=10&offset=0" \
  -H "X-API-Key: la_live_your_key_here"

Response:

[
  {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "title": "10 Best Practices for E-commerce SEO",
    "slug": "best-practices-ecommerce-seo",
    "excerpt": "A concise guide to improving your store's search visibility.",
    "meta_description": "A concise guide to improving your store's search visibility.",
    "hero_image_url": "https://images.pexels.com/photos/123456/pexels-photo.jpg",
    "keywords": ["ecommerce seo"],
    "language_code": "US",
    "created_at": "2026-05-20T10:30:00.000Z"
  }
]

The list endpoint returns summaries only — no article body. Use the detail endpoint below to get the full content.


Get a single article

GET https://app.linkartemis.com/api/v1/articles/:id

Returns the full article including the HTML and Markdown body.

Example:

curl https://app.linkartemis.com/api/v1/articles/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "X-API-Key: la_live_your_key_here"

Response:

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "title": "10 Best Practices for E-commerce SEO",
  "slug": "best-practices-ecommerce-seo",
  "excerpt": "A concise guide to improving your store's search visibility.",
  "meta_description": "A concise guide to improving your store's search visibility.",
  "hero_image_url": "https://images.pexels.com/photos/123456/pexels-photo.jpg",
  "keywords": ["ecommerce seo"],
  "language_code": "US",
  "created_at": "2026-05-20T10:30:00.000Z",
  "content_html": "<p>When it comes to e-commerce...</p><h2>1. Optimise product pages</h2>...",
  "content_markdown": "When it comes to e-commerce...\n\n## 1. Optimise product pages\n..."
}

Which format should I use?

  • content_html  — for most CMSs, website builders, and custom apps
  • content_markdown  — for Markdown-based tools like Notion, MDX, or Obsidian

The <h1>  title is stripped from both content_html  and content_markdown  — it's provided separately in the title  field, so you won't get a duplicate heading when you render the content.


Pagination

Articles are sorted newest first. To page through them:

# Page 1
curl "https://app.linkartemis.com/api/v1/articles?limit=20&offset=0" \
  -H "X-API-Key: la_live_your_key_here"

# Page 2
curl "https://app.linkartemis.com/api/v1/articles?limit=20&offset=20" \
  -H "X-API-Key: la_live_your_key_here"

When a response contains fewer items than your limit , you've reached the end.


Code examples

Fetch all articles (JavaScript)

async function fetchAllArticles() {
  const allArticles = [];
  let offset = 0;
  const limit = 50;

  while (true) {
    const res = await fetch(
      `https://app.linkartemis.com/api/v1/articles?limit=${limit}&offset=${offset}`,
      { headers: { 'X-API-Key': process.env.LINKARTEMIS_API_KEY } }
    );

    if (!res.ok) throw new Error(`API error: ${res.status}`);

    const articles = await res.json();
    if (articles.length === 0) break;

    allArticles.push(...articles);
    if (articles.length < limit) break;

    offset += limit;
  }

  return allArticles;
}

Push a single article to your CMS (JavaScript)

async function syncArticle(articleId) {
  const res = await fetch(
    `https://app.linkartemis.com/api/v1/articles/${articleId}`,
    { headers: { 'X-API-Key': process.env.LINKARTEMIS_API_KEY } }
  );

  if (!res.ok) throw new Error(`Failed to fetch article: ${res.status}`);
  const article = await res.json();

  // Map to your CMS fields
  await fetch('https://your-cms.example.com/posts', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      title:          article.title,
      slug:           article.slug,
      body:           article.content_html,
      description:    article.meta_description,
      featured_image: article.hero_image_url,
    }),
  });
}

Rate limits

You can make up to 60 requests per minute per API key. If you exceed this, you'll get a 429  response with a Retry-After  header telling you how many seconds to wait before retrying.


Error codes

Code Meaning
401
Missing, invalid, or revoked API key
404
Article not found (wrong ID, or article isn't complete yet)
429
Rate limit exceeded — wait and retry
500
Server error — try again in a moment

Managing keys

You can have multiple active keys at the same time which is useful for separating environments or integrations.

To revoke a key: Go to Integrations → API → Manage, find the key by name, and click Revoke. Revocation is instant.

To rotate a key:

  1. Generate a new key and update your app to use it
  2. Confirm it works
  3. Revoke the old key

Still need help? Contact Us Contact Us