JustBlogged Redirects API

Blog redirect management

GitHub OpenAPI

Operations 5

GET /blogs/{blogId}/redirects List redirects #
POST /blogs/{blogId}/redirects Create redirect #
GET /blogs/{blogId}/redirects/{redirectId} Get redirect #
PATCH /blogs/{blogId}/redirects/{redirectId} Update redirect #
DELETE /blogs/{blogId}/redirects/{redirectId} Delete redirect #

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/justblogged-com:justblogged-com-redirects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

justblogged-com-redirects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: JustBlogged Redirects API
  description: Content management API for JustBlogged multi-tenant blog platform
  version: 1.0.0
  contact:
    name: JustBlogged
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
servers:
- url: /api
  description: API base path
security:
- bearerAuth: []
tags:
- name: Redirects
  description: Blog redirect management
paths:
  /blogs/{blogId}/redirects:
    get:
      tags:
      - Redirects
      summary: List redirects
      description: List redirects with optional search, status, type, and pagination filters. Requires manageBlog permission on the target blog. Blog-scoped API keys are supported.
      operationId: listRedirects
      parameters:
      - $ref: '#/components/parameters/blogId'
      - name: search
        in: query
        description: Search source paths and destinations.
        schema:
          type: string
          maxLength: 200
          default: ''
      - name: status
        in: query
        description: Filter by active state.
        schema:
          type: string
          enum:
          - all
          - active
          - inactive
          default: all
      - name: type
        in: query
        description: Filter by HTTP redirect status code.
        schema:
          type: string
          enum:
          - all
          - '301'
          - '302'
          default: all
      - name: page
        in: query
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
      responses:
        '200':
          description: Paginated redirects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedirectListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      tags:
      - Redirects
      summary: Create redirect
      description: Create a permanent or temporary redirect. Source paths must be unique within the blog and cannot create a redirect loop. Requires manageBlog permission on the target blog. Blog-scoped API keys are supported.
      operationId: createRedirect
      parameters:
      - $ref: '#/components/parameters/blogId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRedirectRequest'
      responses:
        '200':
          description: Created redirect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Redirect'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: Source path already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /blogs/{blogId}/redirects/{redirectId}:
    get:
      tags:
      - Redirects
      summary: Get redirect
      description: Get a redirect by ID. Requires manageBlog permission on the target blog. Blog-scoped API keys are supported.
      operationId: getRedirect
      parameters:
      - $ref: '#/components/parameters/blogId'
      - $ref: '#/components/parameters/redirectId'
      responses:
        '200':
          description: Redirect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Redirect'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      tags:
      - Redirects
      summary: Update redirect
      description: Update a redirect source, destination, status code, or active state. The update cannot create a duplicate source or redirect loop. Requires manageBlog permission on the target blog. Blog-scoped API keys are supported.
      operationId: updateRedirect
      parameters:
      - $ref: '#/components/parameters/blogId'
      - $ref: '#/components/parameters/redirectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRedirectRequest'
      responses:
        '200':
          description: Updated redirect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Redirect'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Source path already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      tags:
      - Redirects
      summary: Delete redirect
      description: Delete a redirect by ID. Requires manageBlog permission on the target blog. Blog-scoped API keys are supported.
      operationId: deleteRedirect
      parameters:
      - $ref: '#/components/parameters/blogId'
      - $ref: '#/components/parameters/redirectId'
      responses:
        '200':
          description: Redirect deleted
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                properties:
                  success:
                    type: boolean
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Redirect:
      type: object
      required:
      - id
      - blog_id
      - source_path
      - destination
      - status_code
      - active
      - created_at
      - updated_at
      properties:
        id:
          type: string
        blog_id:
          type: string
        source_path:
          type: string
          description: Incoming site path, starting with a single /.
        destination:
          type: string
          description: Destination site path or absolute HTTP(S) URL.
        status_code:
          type: integer
          enum:
          - 301
          - 302
        active:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Error:
      type: object
      required:
      - statusCode
      - statusMessage
      properties:
        statusCode:
          type: integer
        statusMessage:
          type: string
        message:
          type: string
    RedirectListResponse:
      type: object
      required:
      - data
      - pagination
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Redirect'
        pagination:
          type: object
          required:
          - page
          - limit
          - total
          - total_pages
          properties:
            page:
              type: integer
            limit:
              type: integer
            total:
              type: integer
            total_pages:
              type: integer
    CreateRedirectRequest:
      type: object
      required:
      - source_path
      - destination
      additionalProperties: false
      properties:
        source_path:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^/(?!/)[^?#]*$
          description: Incoming site path. Query strings and fragments are not allowed.
        destination:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^(?:/(?!/)|https?://)
          description: Destination site path or absolute HTTP(S) URL.
        status_code:
          type: integer
          enum:
          - 301
          - 302
          default: 301
        active:
          type: boolean
          default: true
    UpdateRedirectRequest:
      type: object
      minProperties: 1
      additionalProperties: false
      properties:
        source_path:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^/(?!/)[^?#]*$
          description: Updated incoming site path. Query strings and fragments are not allowed.
        destination:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^(?:/(?!/)|https?://)
          description: Updated destination site path or absolute HTTP(S) URL.
        status_code:
          type: integer
          enum:
          - 301
          - 302
        active:
          type: boolean
  parameters:
    redirectId:
      name: redirectId
      in: path
      required: true
      description: Redirect ID
      schema:
        type: string
    blogId:
      name: blogId
      in: path
      required: true
      description: Blog ID
      schema:
        type: string
  responses:
    BadRequest:
      description: Invalid request data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key authentication (format: jb_xxxx). Blog-scoped keys can manage only their bound blog and inherit the key owner''s current account status and blog permissions.'