Google Blogger Posts API
The Posts API from Google Blogger — 6 operation(s) for posts.
The Posts API from Google Blogger — 6 operation(s) for posts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/google-blogger:google-blogger-posts-api"
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.
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: 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)