---
title: "Google Business Profile API: schedule posts"
url: "https://get1post.com/developers/gbp.md"
canonical_url: "https://get1post.com/developers/gbp"
last_updated: "2026-10-26"
type: "reference"
summary: "Post and schedule to Google Business Profile with the 1Post API and MCP server: the request, the reply, every rule it is checked against and a dry run."
related: ["https://get1post.com/platforms/gbp.md", "https://get1post.com/platforms/gbp/specs.md", "https://get1post.com/docs/api-posts.md", "https://get1post.com/docs/mcp.md"]
---

# Google Business Profile API: schedule posts

Post and schedule to Google Business Profile with the 1Post API and MCP server: the request, the reply, every rule it is checked against and a dry run.

Post to Google Business Profile from code with one request: POST /v1/posts with your business profile id, the text and a schedule_at time. Google Business Profile text is limited to 1,500 characters, counted by code points. 1Post allows up to 10 posts a day for each connected business profile, and a dry run checks a post against every rule first.

## Connect Google Business Profile first

1. Open Accounts in 1Post and choose Connect.
2. Pick Google.
3. Sign in with Google and approve access for the business profile you want to post to.
4. Choose the business profile in 1Post. It is ready to pick in the composer.

Then GET /v1/accounts returns the id of the Google Business Profile business profile to use in the request.

Google Business Profile posts go into one of the account's locations; GET /v1/accounts/{id}/targets lists them.

## Send a post to Google Business Profile

**Schedule a post**

```bash
curl https://api.get1post.com/v1/posts \
  -H "Authorization: Bearer $ONEPOST_API_KEY" \
  -H "Idempotency-Key: gbp-first-post" \
  -d '{"accounts":["ACCOUNT_ID"],"text":"New opening hours for the holiday week.","schedule_at":"2026-11-02T15:00:00Z"}'
```

The reply is 202 with the post (status scheduled) and one destination for Google Business Profile, which moves from queued to published or failed.

## What you can send to Google Business Profile

- Update
- Event
- Offer
- One photo
- Call-to-action button

## What Google Business Profile publishes

- A post button can be Book, Order, Shop, Learn more, Sign up or Call. A Call button takes no web address.

## Google Business Profile rules the request is checked against

| Rule | What 1Post checks |
| --- | --- |
| Text limit | 1,500 characters, counted by code points |
| Media accepted | Images |
| Images per post | 1 |
| Threads | No |
| First comment | No |
| Posts per day, per connected account (1Post) | 10 |

The same table with sources is on the [Google Business Profile specs page](https://get1post.com/platforms/gbp/specs.md).

## Check the post before it is queued

Add "dry_run": true to test a post: nothing is kept, a valid one answers 200 and a broken one answers 422 naming the rule.

**A refused request, abridged**

```json
{
  "error": {
    "code": "invalid_for_platform",
    "message": "gbp refuses this post: Google Business Profile counts 1,532 of 1,500 characters in part 1. (text_too_long).",
    "fix": "Fix the rule named in the message and send the post again.",
    "retryable": false,
    "request_id": "REQUEST_ID"
  }
}
```

An assistant connected to the [MCP server](https://get1post.com/docs/mcp.md) sends the same fields to create_post; [set one up](https://get1post.com/assistants.md).

## Questions

**Can I post to Google Business Profile with an API key?**

Yes. A key with write scope can create, change and cancel Google Business Profile posts for the workspace it belongs to, with the role of the member who made it. See [API authentication](https://get1post.com/docs/api-authentication.md).

**What happens if a Google Business Profile post breaks a rule?**

The request is refused with invalid_for_platform and the failing rule is named. Fix it and send the request again, or send it with dry_run to test the fix first.

**How many Google Business Profile posts can I send in a day?**

Up to 10 for each connected business profile. A request that would pass that answers daily_cap with the time the day frees up.

## Sources

- [Google Business Profile API: local posts](https://developers.google.com/my-business/reference/rest/v4/accounts.locations.localPosts), read 2026-10-26

## Related

- [Schedule Google Business Profile posts](https://get1post.com/platforms/gbp.md)
- [Google Business Profile specs and limits](https://get1post.com/platforms/gbp/specs.md)
- [Creating and changing posts with the API: 1Post docs](https://get1post.com/docs/api-posts.md)
- [The MCP server: 1Post docs](https://get1post.com/docs/mcp.md)
