licensy-ai Blog API

The blog API from licensy-ai — 7 operation(s) for blog.

Operations 7

GET /api/v2/blog/posts Get Blog Posts #
GET /api/v2/blog/posts/{slug} Get Blog Post By Slug #
POST /api/v2/blog/sync Sync Blog Posts #
PATCH /api/v2/blog/posts/{page_id}/status Update Post Status #
GET /api/v2/blog/database-url Get Database Url #
GET /api/v2/blog/test-connection Test Notion Connection #
GET /api/v2/blog/images/{filename} Get Blog Image #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/licensy-ai:licensy-ai-blog-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

licensy-ai-blog-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Blog API
  version: 0.1.0
tags:
- name: blog
paths:
  /api/v2/blog/posts:
    get:
      tags:
      - blog
      summary: Get Blog Posts
      description: 'Get all published blog posts from Notion.


        Args:

        category: Optional category filter

        include_drafts: Include draft posts (for admin management)


        Returns:

        List of blog posts'
      operationId: get_blog_posts_api_v2_blog_posts_get
      parameters:
      - name: category
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by category
          title: Category
        description: Filter by category
      - name: include_drafts
        in: query
        required: false
        schema:
          type: boolean
          description: Include draft posts (admin only)
          default: false
          title: Include Drafts
        description: Include draft posts (admin only)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v2/blog/posts/{slug}:
    get:
      tags:
      - blog
      summary: Get Blog Post By Slug
      description: 'Get a single blog post by slug, including full content.


        Args:

        slug: Post slug


        Returns:

        Blog post with content'
      operationId: get_blog_post_by_slug_api_v2_blog_posts__slug__get
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v2/blog/sync:
    post:
      tags:
      - blog
      summary: Sync Blog Posts
      description: 'Force refresh blog posts from Notion (admin only).

        Clears cache and fetches fresh data.


        Returns:

        Success message'
      operationId: sync_blog_posts_api_v2_blog_sync_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v2/blog/posts/{page_id}/status:
    patch:
      tags:
      - blog
      summary: Update Post Status
      description: 'Update the status of a blog post in Notion (admin only).

        Checks if Status property exists before attempting update.


        Args:

        page_id: Notion page ID

        status: New status value


        Returns:

        Updated post data'
      operationId: update_post_status_api_v2_blog_posts__page_id__status_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: page_id
        in: path
        required: true
        schema:
          type: string
          title: Page Id
      - name: status
        in: query
        required: true
        schema:
          type: string
          description: New status (Published, Draft, Archived)
          title: Status
        description: New status (Published, Draft, Archived)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v2/blog/database-url:
    get:
      tags:
      - blog
      summary: Get Database Url
      description: 'Get the Notion database URL for creating new posts (admin only).


        Returns:

        Database URL'
      operationId: get_database_url_api_v2_blog_database_url_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v2/blog/test-connection:
    get:
      tags:
      - blog
      summary: Test Notion Connection
      description: 'Test the Notion API connection and database access (admin only).


        Returns:

        Connection test results'
      operationId: test_notion_connection_api_v2_blog_test_connection_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v2/blog/images/{filename}:
    get:
      tags:
      - blog
      summary: Get Blog Image
      description: 'Stable proxy for a post''s featured image.


        Why: Notion serves featured images as S3 presigned URLs that expire after

        60 minutes. AI crawlers (Perplexity, ChatGPT) cache the rendered HTML and

        cite the image URL inside it — when that URL expires, citations become

        broken-image links. This endpoint resolves the slug → current Notion URL

        on every cache miss, fetches the bytes, and serves them with a 24h

        Cache-Control so CDNs amortize the upstream fetch.


        The URL `/api/v2/blog/images/.` is stable forever (slug is

        immutable per post), so citations never rot.'
      operationId: get_blog_image_api_v2_blog_images__filename__get
      parameters:
      - name: filename
        in: path
        required: true
        schema:
          type: string
          title: Filename
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer