API

API reference

Every endpoint of the CreatorHyve API, generated from the same description the server uses.

Base URL: https://creatorhyve.com/api/v1/developer. All endpoints need Authorization: Bearer ch_live_... and the scope shown for each. The same description is available as OpenAPI 3.1.

Accounts

GET /accounts

List connected accounts. Scope: accounts:read.

Responses:

  • 200: Connected accounts. Tokens are never returned.

Media

POST /media

Add media to the library. Scope: media:write. Supports the Idempotency-Key header.

Send { "url": "https://..." } to import an image or short video (up to 25 MB), or use { "action": "init" } then PUT the file then { "action": "complete" } for large files. Use the returned media.id as mediaId when creating a post.

FieldTypeRequiredDescription
urlstring (uri)no
actionstringnoOne of: init, complete.
typestringno
sizeintegerno
keystringno
filenamestringno

Responses:

  • 200: Upload URL (action init).
  • 201: Media added.

GET /media/:id

Get a media item. Scope: posts:read.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 200: The media item.

Posts

GET /posts

List posts. Scope: posts:read.

ParameterInDescription
statusquerydraft, scheduled, published or failed (default scheduled).
tagqueryOnly posts with this tag.
limitquery1 to 100 (default 50).
offsetqueryOffset for paging.

Responses:

  • 200: Posts.

POST /posts

Create or schedule a post. Scope: posts:write. Supports the Idempotency-Key header.

With scheduledDatetime the post is scheduled to every listed platform (the most recently connected account of each platform unless accountId is given). Without it the post is saved as a draft. Send an Idempotency-Key header so retries cannot create duplicates.

FieldTypeRequiredDescription
captionstringyesThe post text.
platformsarrayyesPlatform names ("x") or { "platform": "x", "accountId": "<uuid>" }. Use GET /accounts for the ids.
scheduledDatetimestring (date-time)noISO 8601, in the future. Omit to save a draft.
mediaIdstring (uuid)nomedia.id from POST /media.
tagsarray of stringsnoUp to 10 labels.
timezonestringnoIANA time zone, default UTC.
titlestringnoDefaults to the first line of the caption.
optionsobjectnoPer-platform settings, see the platform options guide.

Responses:

  • 201: Created.
  • 403: Plan or monthly schedule limit reached.

GET /posts/:id

Get a post. Scope: posts:read.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 200: The post.

PATCH /posts/:id

Edit a post. Scope: posts:write.

Edit caption, title, tags or time of a draft or a scheduled post that is not about to publish. Sending scheduledDatetime for a draft schedules it.

ParameterInDescription
idpathIdentifier (UUID).
FieldTypeRequiredDescription
captionstringno
titlestringno
scheduledDatetimestring (date-time)no
tagsarrayno
platformsarrayno

Responses:

  • 200: The updated post.
  • 409: The post can no longer be edited.

DELETE /posts/:id

Delete a post. Scope: posts:write.

Drafts and scheduled posts that have not started publishing.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 204: Deleted.

GET /posts/:id/results

Per-platform results. Scope: posts:read.

Status, link and a plain-language error for each platform of a post.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 200: Results.

Usage

GET /usage

Plan, credits and schedule limit. Scope: posts:read.

Responses:

  • 200: Usage.

Analytics

GET /analytics

Analytics summary. Scope: analytics:read.

Totals, per-platform breakdown and top posts. Metrics are collected once a day.

ParameterInDescription
periodqueryDays, 1 to 90 (default 30).
platformqueryOnly this platform.
limitqueryTop posts, 1 to 100 (default 20).

Responses:

  • 200: Summary.

Webhooks

GET /webhooks

List webhook endpoints. Scope: webhooks:manage.

Responses:

  • 200: Endpoints.

POST /webhooks

Create a webhook endpoint. Scope: webhooks:manage.

Events: post.published, post.failed, account.needs_reconnect. The signing secret is returned once. Deliveries carry X-CreatorHyve-Signature: t=<unix>,v1=<hmac_sha256(secret, "<t>.<body>")>.

FieldTypeRequiredDescription
urlstring (uri)yes
eventsarrayno
descriptionstringno

Responses:

  • 201: Created. Includes secret.

PATCH /webhooks/:id

Update a webhook endpoint. Scope: webhooks:manage.

ParameterInDescription
idpathIdentifier (UUID).
FieldTypeRequiredDescription
eventsarrayno
is_activebooleanno
descriptionstringno

Responses:

  • 200: Updated.

DELETE /webhooks/:id

Delete a webhook endpoint. Scope: webhooks:manage.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 204: Deleted.

POST /webhooks/:id/test

Send a test event. Scope: webhooks:manage.

ParameterInDescription
idpathIdentifier (UUID).

Responses:

  • 200: Queued and attempted.

List short links. Scope: links:manage.

Responses:

  • 200: Short links with click counts.

POST /links

Create a short link. Scope: links:manage.

FieldTypeRequiredDescription
urlstring (uri)yes

Responses:

  • 201: Created.

DELETE /links/:code

Disable a short link. Scope: links:manage.

ParameterInDescription
codepathShort code.

Responses:

  • 204: Disabled.