Google Blogger Posts API

The Posts API from Google Blogger — 6 operation(s) for posts.

GitHub OpenAPI

Operations 10

POST /v3/blogs/{blogId}/posts/{postId}/publish Publish posts #
DELETE /v3/blogs/{blogId}/posts/{postId} Delete posts #
GET /v3/blogs/{blogId}/posts/{postId} Get posts #
PUT /v3/blogs/{blogId}/posts/{postId} Update posts #
PATCH /v3/blogs/{blogId}/posts/{postId} Patch posts #
POST /v3/blogs/{blogId}/posts/{postId}/revert Revert posts #
GET /v3/blogs/{blogId}/posts/search Search posts #
GET /v3/blogs/{blogId}/posts/bypath Get by path posts #
POST /v3/blogs/{blogId}/posts Insert posts #
GET /v3/blogs/{blogId}/posts List posts #

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/google-blogger:google-blogger-posts-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

google-blogger-posts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Blogger API Posts API
  version: v3
  description: Generated from Google's published Discovery document for Blogger API (blogger v3, revision 20261110). 10 operation(s).
  contact:
    name: Google
    url: https://developers.google.com/
  termsOfService: https://developers.google.com/terms
externalDocs:
  url: https://developers.google.com/blogger/docs/3.0/getting_started
servers:
- url: https://blogger.googleapis.com
paths:
  /v3/blogs/{blogId}/posts/{postId}/publish:
    post:
      operationId: blogger.posts.publish
      summary: Publish posts
      description: Publishes a post.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      - name: publishDate
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id001
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id001
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
  /v3/blogs/{blogId}/posts/{postId}:
    delete:
      operationId: blogger.posts.delete
      summary: Delete posts
      description: Deletes a post by blog id and post id.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      - name: useTrash
        in: query
        required: false
        description: Move to Trash if possible
        schema:
          type: boolean
      responses:
        '200':
          description: Successful response
        4XX:
          content: &id002
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id002
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
    get:
      operationId: blogger.posts.get
      summary: Get posts
      description: Gets a post by blog id and post id
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      - name: fetchBody
        in: query
        required: false
        schema:
          type: boolean
          default: 'true'
      - name: fetchImages
        in: query
        required: false
        schema:
          type: boolean
      - name: maxComments
        in: query
        required: false
        schema:
          format: uint32
          type: integer
      - name: view
        in: query
        required: false
        schema:
          type: string
          enum:
          - VIEW_TYPE_UNSPECIFIED
          - READER
          - AUTHOR
          - ADMIN
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id003
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id003
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
        - https://www.googleapis.com/auth/blogger.readonly
      - apiKey: []
      tags:
      - Posts
    put:
      operationId: blogger.posts.update
      summary: Update posts
      description: Updates a post by blog id and post id.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      - name: fetchBody
        in: query
        required: false
        schema:
          type: boolean
          default: 'true'
      - name: fetchImages
        in: query
        required: false
        schema:
          type: boolean
      - name: maxComments
        in: query
        required: false
        schema:
          type: integer
          format: uint32
      - name: publish
        in: query
        required: false
        schema:
          type: boolean
      - name: revert
        in: query
        required: false
        schema:
          type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Post'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id004
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id004
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
    patch:
      operationId: blogger.posts.patch
      summary: Patch posts
      description: Patches a post.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      - name: fetchBody
        in: query
        required: false
        schema:
          type: boolean
          default: 'true'
      - name: fetchImages
        in: query
        required: false
        schema:
          type: boolean
      - name: maxComments
        in: query
        required: false
        schema:
          format: uint32
          type: integer
      - name: publish
        in: query
        required: false
        schema:
          type: boolean
      - name: revert
        in: query
        required: false
        schema:
          type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Post'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id005
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id005
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
  /v3/blogs/{blogId}/posts/{postId}/revert:
    post:
      operationId: blogger.posts.revert
      summary: Revert posts
      description: Reverts a published or scheduled post to draft state.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: postId
        in: path
        required: true
        description: Resource name segment (postId).
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id006
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id006
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
  /v3/blogs/{blogId}/posts/search:
    get:
      operationId: blogger.posts.search
      summary: Search posts
      description: Searches for posts matching given query terms in the specified blog.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: fetchBodies
        in: query
        required: false
        schema:
          type: boolean
          default: 'true'
      - name: orderBy
        in: query
        required: false
        schema:
          enum:
          - ORDER_BY_UNSPECIFIED
          - PUBLISHED
          - UPDATED
          default: PUBLISHED
          type: string
      - name: q
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostList'
        4XX:
          content: &id007
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id007
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
        - https://www.googleapis.com/auth/blogger.readonly
      - apiKey: []
      tags:
      - Posts
  /v3/blogs/{blogId}/posts/bypath:
    get:
      operationId: blogger.posts.getByPath
      summary: Get by path posts
      description: Gets a post by path.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: maxComments
        in: query
        required: false
        schema:
          type: integer
          format: uint32
      - name: path
        in: query
        required: true
        schema:
          type: string
      - name: view
        in: query
        required: false
        schema:
          enum:
          - VIEW_TYPE_UNSPECIFIED
          - READER
          - AUTHOR
          - ADMIN
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id008
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id008
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
        - https://www.googleapis.com/auth/blogger.readonly
      - apiKey: []
      tags:
      - Posts
  /v3/blogs/{blogId}/posts:
    post:
      operationId: blogger.posts.insert
      summary: Insert posts
      description: Inserts a post.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: fetchBody
        in: query
        required: false
        schema:
          default: 'true'
          type: boolean
      - name: fetchImages
        in: query
        required: false
        schema:
          type: boolean
      - name: isDraft
        in: query
        required: false
        schema:
          type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Post'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        4XX:
          content: &id009
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id009
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
      - apiKey: []
      tags:
      - Posts
    get:
      operationId: blogger.posts.list
      summary: List posts
      description: Lists posts.
      parameters:
      - name: blogId
        in: path
        required: true
        description: Resource name segment (blogId).
        schema:
          type: string
      - name: endDate
        in: query
        required: false
        schema:
          type: string
      - name: fetchBodies
        in: query
        required: false
        schema:
          type: boolean
          default: 'true'
      - name: fetchImages
        in: query
        required: false
        schema:
          type: boolean
      - name: labels
        in: query
        required: false
        schema:
          type: string
      - name: maxResults
        in: query
        required: false
        schema:
          type: integer
          format: uint32
      - name: orderBy
        in: query
        required: false
        schema:
          default: PUBLISHED
          type: string
          enum:
          - ORDER_BY_UNSPECIFIED
          - PUBLISHED
          - UPDATED
      - name: pageToken
        in: query
        required: false
        schema:
          type: string
      - name: sortOption
        in: query
        required: false
        description: Sort direction applied to post list.
        schema:
          enum:
          - SORT_OPTION_UNSPECIFIED
          - DESCENDING
          - ASCENDING
          default: DESCENDING
          type: string
      - name: startDate
        in: query
        required: false
        schema:
          type: string
      - name: status
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - LIVE
            - DRAFT
            - SCHEDULED
            - SOFT_TRASHED
      - name: view
        in: query
        required: false
        schema:
          enum:
          - VIEW_TYPE_UNSPECIFIED
          - READER
          - AUTHOR
          - ADMIN
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostList'
        4XX:
          content: &id010
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleRpcError'
          description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
        default:
          content: *id010
          description: Error response (google.rpc.Status)
      security:
      - oauth2:
        - https://www.googleapis.com/auth/blogger
        - https://www.googleapis.com/auth/blogger.readonly
      - apiKey: []
      tags:
      - Posts
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: key
      description: API key; accepted by methods that do not need user data.
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.google.com/o/oauth2/auth
          tokenUrl: https://oauth2.googleapis.com/token
          scopes:
            https://www.googleapis.com/auth/blogger: Manage your Blogger account
            https://www.googleapis.com/auth/blogger.readonly: View your Blogger account
  schemas:
    Comment:
      type: object
      properties:
        selfLink:
          type: string
          description: The API REST URL to fetch this resource from.
        updated:
          description: RFC 3339 date-time when this comment was last updated.
          type: string
        content:
          description: The actual content of the comment. May include HTML markup.
          type: string
        id:
          description: The identifier for this resource.
          type: string
        kind:
          description: The kind of this entry. Always blogger#comment.
          type: string
        post:
          properties:
            id:
              type: string
              description: The identifier of the post containing this comment.
          description: Data about the post containing this comment.
          type: object
        inReplyTo:
          type: object
          description: Data about the comment this is in reply to.
          properties:
            id:
              type: string
              description: The identified of the parent of this comment.
        published:
          type: string
          description: RFC 3339 date-time when this comment was published.
        status:
          enum:
          - LIVE
          - EMPTIED
          - PENDING
          - SPAM
          description: The status of the comment (only populated for admin users).
          type: string
        blog:
          type: object
          description: Data about the blog containing this comment.
          properties:
            id:
              description: The identifier of the blog containing this comment.
              type: string
        author:
          properties:
            url:
              type: string
              description: The URL of the creator's Profile page.
            id:
              description: The identifier of the creator.
              type: string
            image:
              description: The creator's avatar.
              properties:
                url:
                  description: The creator's avatar URL.
                  type: string
              type: object
            displayName:
              type: string
              description: The display name.
          description: The author of this Comment.
          type: object
    GoogleRpcError:
      type: object
      description: The error envelope every Google API returns.
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
            message:
              type: string
            status:
              type: string
            details:
              type: array
              items:
                type: object
    Post:
      type: object
      properties:
        titleLink:
          type: string
          description: The title link URL, similar to atom's related link.
        readerComments:
          type: string
          enum:
          - ALLOW
          - DONT_ALLOW_SHOW_EXISTING
          - DONT_ALLOW_HIDE_EXISTING
          description: Comment control and display setting for readers of this post.
        replies:
          properties:
            items:
              description: The List of Comments for this Post.
              items:
                $ref: '#/components/schemas/Comment'
              type: array
            totalItems:
              type: string
              format: int64
              description: The count of comments on this post.
            selfLink:
              type: string
              description: The URL of the comments on this post.
          type: object
          description: The container of comments on this Post.
        customMetaData:
          description: The JSON meta-data for the Post.
          type: string
          deprecated: true
        trashed:
          description: RFC 3339 date-time when this Post was last trashed.
          type: string
        url:
          type: string
          description: The URL where this Post is displayed.
        selfLink:
          description: The API REST URL to fetch this resource from.
          type: string
        status:
          enum:
          - LIVE
          - DRAFT
          - SCHEDULED
          - SOFT_TRASHED
          description: Status of the post. Only set for admin-level requests.
          type: string
        images:
          type: array
          description: Display image for the Post.
          items:
            properties:
              url:
                type: string
            type: object
        content:
          description: The content of the Post. May contain HTML markup.
          type: string
        kind:
          type: string
          description: The kind of this entity. Always blogger#post.
        blog:
          description: Data about the blog containing this Post.
          type: object
          properties:
            id:
              type: string
              description: The identifier of the Blog that contains this Post.
        location:
          type: object
          properties:
            lng:
              description: Location's longitude.
              type: number
              format: double
            lat:
              format: double
              type: number
              description: Location's latitude.
            name:
              description: Location name.
              type: string
            span:
              description: Location's viewport span. Can be used when rendering a map preview.
              type: string
          description: The location for geotagged posts.
        id:
          description: The identifier of this Post.
          type: string
        labels:
          type: array
          description: The list of labels this Post was tagged with.
          items:
            type: string
        title:
          type: string
          description: The title of the Post.
        updated:
          type: string
          description: RFC 3339 date-time when this Post was last updated.
        author:
          description: The author of this Post.
          properties:
            displayName:
              type: string
              description: The display name.
            image:
              properties:
                url:
                  type: string
                  description: The creator's avatar URL.
              description: The creator's avatar.
              type: object
            url:
              type: string
              description: The URL of the creator's Profile page.
            id:
              description: The identifier of the creator.
              type: string
          type: object
        published:
          description: RFC 3339 date-time when this Post was published.
          type: string
        etag:
          description: Etag of the resource.
          type: string
    PostList:
      type: object
      properties:
        kind:
          description: The kind of this entity. Always blogger#postList.
          type: string
        prevPageToken:
          type: string
          description: Pagination token to fetch the previous page, if one exists.
        etag:
          type: string
          description: Etag of the response.
        nextPageToken:
          description: Pagination token to fetch the next page, if one exists.
          type: string
        items:
          type: array
          description: The list of Posts for this Blog.
          items:
            $ref: '#/components/schemas/Post'
x-provenance:
  method: harvested
  publisher: Google
  source: https://blogger.googleapis.com/$discovery/rest?version=v3
  note: converted by discovery-to-openapi.py from Google's Discovery document (revision 20261110)