Skip to main content

Create a Post API

The Create Post API lets your backend publish a post to the GNet network on behalf of your own company, with a single authenticated call. It produces exactly the same result as creating the post inside the Connect portal — the same validation, plan check, rate limits, trust scoring and moderation routing, in the same order. There is no multi-step handshake: get a token, call the endpoint.

Endpoint

POST https://dashboard.grdd.net/api/partner/posts
This endpoint lives on the Connect application host (dashboard.grdd.net), not on core.grdd.net like the other Content API endpoints on this page. Use https://dashboard.grdd.dev for the development environment.

Authentication

This endpoint requires a Bearer token issued by GNet core. To obtain one, see the Get Token API. Headers:
You may only create posts for your own company. The griddid in the body must match the GNET ID your token was issued for (or its parent account); anything else is rejected with 403 not_entitled. There is no impersonation or act-on-behalf-of mode.

Request Body

Top-level fields

detail fields


Post Types

postType must be one of: Exceeding a cap returns 429 rate_limited with a Retry-After header.

typed fields

Five post types require a detail.typed object. A missing or invalid typed block fails validation with 422.

What the Server Overrides

Three fields are required by the schema but decided by the server — send placeholders and read the real values back from the response:
  • status — always recomputed. Companies flagged as post-trusted publish immediately (published); everyone else is queued for moderator review (pending_review). You cannot self-publish by sending "status": "published".
  • slug — always regenerated from your title, scoped to your GNET ID.
  • authorTrustAtPublish — computed from your profile score, partner count, plan tier and account age.

Visibility

If you request "visibility": "public" but your trust score is below the public-visibility floor, the post is accepted and downgraded to gnet. When this happens the response includes "visibilityDowngraded": true.

Images

There is no partner image-upload endpoint. Host your images yourself and pass absolute URLs in imageUrls (maximum 4).

Request Example


Response

201 Created — published immediately

202 Accepted — queued for review

202 means the post was created but is not visible yet — a GNet moderator must approve it. There is no status-polling endpoint today, and no callback is sent on approval.
Every response carries an ok boolean. Never treat a 2xx-shaped body as success without checking it.

Error Responses


Retrying Safely

Pass an Idempotency-Key header — any unique string per logical post, such as a UUID you generate before the first attempt.
  • Same key, same body → replays the original response instead of creating a second post.
  • Same key, different body409 idempotency_conflict.
  • Keys are scoped to your caller identity and expire after 24 hours.
Without an idempotency key, a network timeout followed by a retry can create duplicate posts.

Usage Examples

JavaScript/Node.js

Python