Skip to content

Write a Google post

POST
/api/v1/reviews/posts
curl --request POST \
--url https://digize.com/api/v1/reviews/posts \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69' \
--header 'x-api-key: <x-api-key>' \
--data '{ "id": "example", "type": "update", "title": "example", "body": "example", "media": [ { "id": "example", "kind": "photo", "fileName": "example", "description": "example", "imageId": "example", "videoKey": "example" } ], "button": { "action": "book", "url": "example" }, "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "offer": { "couponCode": "example", "terms": "example", "redeemUrl": "example" }, "publish": "draft", "publishAt": "2026-04-15T12:00:00Z" }'

Writes a post, or edits one: kept as a draft, posted now, posted at publishAt, or for a post already out, updated on Google.

Needs the reviews:write permission. It can’t be undone.

Idempotency-Key
string
>= 1 characters <= 255 characters

Makes the request safe to send again: for 24 hours the same key and request answer the first response without repeating the change.

Example

5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69
Media typeapplication/json
object
id
string
<= 64 characters
type
required
string
Allowed values: update offer event
title
required
Any of:
string
<= 58 characters
body
required
string
<= 1500 characters
media
required
Array<object>
<= 10 items
object
id
required
string
<= 64 characters
kind
required
string
Allowed values: photo video
fileName
required
string
<= 200 characters
description
required
string
<= 750 characters
imageId
required
Any of:
string
<= 200 characters
videoKey
required
Any of:
string
<= 400 characters
button
required
Any of:
object
action
required
string
Allowed values: book order shop learn_more sign_up call
url
required
Any of:
string
<= 500 characters
startsAt
required
Any of:
string format: date-time
endsAt
required
Any of:
string format: date-time
offer
required
Any of:
object
couponCode
required
string
<= 60 characters
terms
required
string
<= 5000 characters
redeemUrl
required
string
<= 500 characters
publish
required

Keep as a draft, post now, post at publishAt, or for a post already out, update it.

string
Allowed values: draft now later keep
publishAt
required
Any of:
string format: date-time

Done

Media typeapplication/json
object
id
required
string
type
required
string
Allowed values: update offer event
status
required
string
Allowed values: live scheduled draft expired rejected
title
required
string | null
body
required
string
media
required
Array<object>
object
id
required
string
<= 64 characters
kind
required
string
Allowed values: photo video
fileName
required
string
<= 200 characters
description
required
string
<= 750 characters
imageId
required
Any of:
string
<= 200 characters
videoKey
required
Any of:
string
<= 400 characters
previewUrl
required
string | null
button
required
Any of:
object
action
required
string
Allowed values: book order shop learn_more sign_up call
url
required
Any of:
string
<= 500 characters
startsAt
required
Any of:
string format: date-time
endsAt
required
Any of:
string format: date-time
offer
required
Any of:
object
couponCode
required
string
<= 60 characters
terms
required
string
<= 5000 characters
redeemUrl
required
string
<= 500 characters
publishAt
required
Any of:
string format: date-time
author
required
string
createdAt
required
string format: date-time
views
required
number
clicks
required
number
rejection
required
string | null
pushState
required
Any of:
string
Allowed values: sending failed
searchUrl
required
string | null

Example

{
"type": "update",
"status": "live",
"media": [
{
"kind": "photo"
}
],
"button": {
"action": "book"
},
"pushState": "sending"
}

What was sent isn’t valid (invalid).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

No key, or one that’s unknown, off or expired.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The key doesn’t have the permission this needs.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Nothing has that id (not_found).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

A request with the same Idempotency-Key is still running (conflict).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The Idempotency-Key was used with a different request.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Over the rate limit; see retry-after.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}