API ReferenceView as MarkdownOpenAPI

Community

View as Markdown

Community is the social side of the site: posts, comments, ratings, groups and messages between users, when social mode is on.

Endpoints that need a token: the site owner creates it in their admin (Developers > API reference). AI assistants: how to ask the user for one.

111 endpoints in 6 parts: Comment, Group, Message, Partner, Post, Rating.

Endpoints
PATCH/comment-like/:idGET/commentsPOST/commentsPATCH/commentsPATCH/comments-add-replyGET/comments-of/:idGET/comments-on/:id&:skipPATCH/comments-replyDELETE/comments-reply/:id/:indexGET/comments/:idDELETE/comments/:idPATCH/hide-comment/:id&:replyPATCH/reply-like/:id&:replyIdGET/user-comments/:skipGET/user-liked-comments/:skipPATCH/group-remove-userGET/group/:idPOST/groupsGET/groups/:idPATCH/groups/:idDELETE/groups/:idGET/groups/:skip/:limitPOST/join-groupGET/my-groupsGET/search-groups/:args/:skipPATCH/update-join-request-statusPATCH/add-user/:idPOST/connect-to-roomPATCH/delete-chat/:idGET/find-chat/:product_idPATCH/leave-group/:idGET/message-event/:idPATCH/message-seenGET/messagesPOST/messagesGET/messages-medias/:id&:skip&:limitPATCH/messages/:idDELETE/messages/:idGET/messages/:id&:skip&:limitGET/received-in-app-message/:idPOST/send-in-app-messagePOST/send-messageDELETE/sent-message/:id&:msgPATCH/user-addedGET/partnersPOST/partnersGET/partners/:idPATCH/partners/:idDELETE/partners/:idGET/avg-cost-per-actionGET/bites/:posts&:popular&:ads&:location_adsPATCH/boost-user-post/:idGET/boosted-postsPATCH/cancel-boost-user-post/:idGET/expirable-posts/:skip&:feed&:usersGET/explore/:posts&:popular&:ads&:location_adsGET/feed/:posts&:popular&:ads&:location_ads&:usersGET/following-suggestionsGET/group-feed/:group/:skip/:limitGET/long-video-avg-percentage-viewed-insights/:idGET/long-video-engagement-insights/:idGET/long-video-total-watchtime-insights/:idGET/long-video-views-by-days-insights/:id&:daysGET/long-video-watchtime-by-days-insights/:id&:daysGET/long-videos/:posts&:popular&:adsGET/my-feed/:skip/:limitGET/my-videosPATCH/pin-group-post/:post/:groupGET/post-campaignsPATCH/post-comments/:post&:commentPATCH/post-cta-clicks/:idGET/post-feed/:posts&:popular&:ads&:original_post_id&:location_adsGET/post-insights/:idPATCH/post-poll/:idPATCH/post-reach/:idPATCH/post-times-showed/:idPATCH/post-views/:idGET/post/:idGET/price-plan-posts/:skipGET/profile-feed/:user&:post&:skipGET/recent-feed/:skip&:usersPATCH/remove-thread-post/:postGET/saved-postsPOST/sponsored-post-attributionsGET/static-post/:idGET/static-profile/:handleGET/threads/:skip&:usersGET/trending-videos/:category&:skipPATCH/update-repost/:post&:repostGET/user-exclusive-feed/:user/:skip/:limitGET/user-expirable-posts/:userGET/user-feed/:user/:skip/:limitGET/user-group-feed/:posts&:public_groups&:usersGET/user-liked-posts/:skipGET/user-long-video-ads/:idPOST/user-postPATCH/user-post-like/:idPOST/user-post-link-previewGET/user-post-object/:idPATCH/user-post-save/:idPATCH/user-post-share/:idGET/user-post/:idPATCH/user-post/:idDELETE/user-post/:idGET/video-feed/:video_id&:posts&:popular&:adsGET/viewed-expirable-posts/:skipGET/all-ratings/:id&:item&:skip&:limitPOST/ratingGET/rating/:idGET/ratings-tableGET/user-rating/:email&:validation_code&:type&:id

Like or unlike a comment

Likes or unlikes a comment and notifies its author. Calling it again takes the like back. Answers the comment's likes.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comment.

Parameters
liked_by_idstring

The comment's liked by id.

actionstring

The comment's action.

liked_bystring

The comment's liked by.

Returns

Returns the Comment object.

Status codes

200 401 404 500

PATCH/comment-like/:id
curl -X PATCH 'http://hristovtintdetailng.com/comment-like/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "liked_by_id": "...", "action": "...", "liked_by": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all comments

Every comment. Every comment on the site.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Comment objects.

Status codes

200 401 500

GET/comments
curl -X GET 'http://hristovtintdetailng.com/comments?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "connected_account_user": "6543210fedcba98765432100",
    "commented_on": "6543210fedcba98765432100",
    "comment": "example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "replies": [
      {
        "comment": "example",
        "user": "6543210fedcba98765432100",
        "likes": [
          "6543210fedcba98765432101"
        ],
        "createdAt": "2026-11-04T12:00:00.000Z",
        "isHidden": false,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "mentions": [
      "6543210fedcba98765432101"
    ],
    "isHidden": false,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Create a comment

Comments on a post, product, service or other record (commented_on) and notifies its owner and mentions. Answers 201 with no body. 403 "Comment limit exeded." when the user comments too often; 401 when posting for an account they may not act for. Counts as an interaction on a post, which feeds its ranking.

User token

Needs the token of a signed-in user.

Parameters
userobjectid

User.id.

commentstring

Comment message.

commented_onobjectid

Id of the record commented on (a post, product, service...).

mentionsobjectid[]

User ids.

connected_account_userobjectid

User.id.

Returns

Returns the Comment object.

Status codes

201 400 401 403 500

POST/comments
curl -X POST 'http://hristovtintdetailng.com/comments?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "user": "...", "comment": "...", "commented_on": "...", "mentions": "...", "connected_account_user": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the comment

Edits a comment (comment_id, comment) and notifies new mentions. Only the comment's author (401 otherwise). Answers the updated comment; only users newly mentioned are notified.

User token

Needs the token of a signed-in user.

Parameters
comment_idstring

The comment's comment id.

commentstring

Comment message.

mentionsobjectid[]

User ids.

Returns

Returns the Comment object.

Status codes

200 400 401 404 500

PATCH/comments
curl -X PATCH 'http://hristovtintdetailng.com/comments?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "comment_id": "...", "comment": "...", "mentions": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the comments add reply

Replies to a comment and notifies its author and mentions. Answers { reply }: the new reply. 403 when replying for an account the user may not act for.

User token

Needs the token of a signed-in user.

Parameters
comment_idstring

The comments add reply's comment id.

commentstring

The comments add reply's comment.

user_idstring

The comments add reply's user id.

mentionsstring

The comments add reply's mentions.

Status codes

200 400 401 403 404 500

PATCH/comments-add-reply
curl -X PATCH 'http://hristovtintdetailng.com/comments-add-reply?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "comment_id": "...", "comment": "...", "user_id": "...", "mentions": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a comments of

Comments on a record. 404 when there are none.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comments of.

Status codes

200 401 404 500

GET/comments-of/:id
curl -X GET 'http://hristovtintdetailng.com/comments-of/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a comments on

Comments on a record, a page at a time, without restricted users. Answers { comments, count }, newest first then most liked, skipping users the viewer blocked or who blocked them.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comments on.

skipstringRequired

How many results to skip - for paging.

Status codes

200 401 404 500

GET/comments-on/:id&:skip
curl -X GET 'http://hristovtintdetailng.com/comments-on/{id}&{skip}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the comments reply

Edits a reply to a comment and notifies new mentions. Only the reply's author (401 otherwise). Answers { reply }.

User token

Needs the token of a signed-in user.

Parameters
comment_idstring

The comments reply's comment id.

indexstring

The comments reply's index.

commentstring

The comments reply's comment.

mentionsstring

The comments reply's mentions.

Status codes

200 400 401 404 500

PATCH/comments-reply
curl -X PATCH 'http://hristovtintdetailng.com/comments-reply?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "comment_id": "...", "index": "...", "comment": "...", "mentions": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a comments reply

Deletes a reply to a comment. index is the reply's position in the comment's replies. Only its author or the owner of what it is on (403 otherwise).

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comments reply.

indexstringRequired

The comments reply's index.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/comments-reply/:id/:index
curl -X DELETE 'http://hristovtintdetailng.com/comments-reply/{id}/{index}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a comment

One comment. 404 when there is no such comment.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comment.

Returns

Returns the Comment object.

Status codes

200 401 404 500

GET/comments/:id
curl -X GET 'http://hristovtintdetailng.com/comments/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a comment

Deletes a comment (its author, or the owner of what it is on). Answers the deleted comment; 403 for anyone else.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the comment.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/comments/:id
curl -X DELETE 'http://hristovtintdetailng.com/comments/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update a hide comment

Hides a comment on a post, or one of its replies (reply: its position), for the post's author. Only the post's author can hide; for anyone else nothing changes. A hidden comment stays stored but others no longer see it. There is no way to show it again here.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the hide comment.

replystringRequired

The hide comment's reply.

Returns

Returns the Comment object.

Status codes

200 400 401 404 500

PATCH/hide-comment/:id&:reply
curl -X PATCH 'http://hristovtintdetailng.com/hide-comment/{id}&{reply}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Like or unlike a reply

Likes or unlikes a reply and notifies its author. Calling it again takes the like back. Answers the reply's likes.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the reply.

replyIdstringRequired

The reply's reply id.

Parameters
liked_by_idstring

The reply's liked by id.

actionstring

The reply's action.

liked_bystring

The reply's liked by.

Status codes

200 401 404 500

PATCH/reply-like/:id&:replyId
curl -X PATCH 'http://hristovtintdetailng.com/reply-like/{id}&{replyId}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "liked_by_id": "...", "action": "...", "liked_by": "..." }'
Response
{
  "user": "6543210fedcba98765432100",
  "connected_account_user": "6543210fedcba98765432100",
  "commented_on": "6543210fedcba98765432100",
  "comment": "example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "replies": [
    {
      "comment": "example",
      "user": "6543210fedcba98765432100",
      "likes": [
        "6543210fedcba98765432101"
      ],
      "createdAt": "2026-11-04T12:00:00.000Z",
      "isHidden": false,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "mentions": [
    "6543210fedcba98765432101"
  ],
  "isHidden": false,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user comments

Comments the signed-in user wrote, with what they are on. Answers the comments grouped by what they are on: posts, products, services, blog posts. 403 for an account the user may not act for.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
on_behalf_ofstring

Only user comments with this on behalf of.

Returns

Returns a list of Comment objects.

Status codes

200 401 403 500

GET/user-comments/:skip
curl -X GET 'http://hristovtintdetailng.com/user-comments/{skip}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "connected_account_user": "6543210fedcba98765432100",
    "commented_on": "6543210fedcba98765432100",
    "comment": "example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "replies": [
      {
        "comment": "example",
        "user": "6543210fedcba98765432100",
        "likes": [
          "6543210fedcba98765432101"
        ],
        "createdAt": "2026-11-04T12:00:00.000Z",
        "isHidden": false,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "mentions": [
      "6543210fedcba98765432101"
    ],
    "isHidden": false,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all user liked comments

Comments the signed-in user liked. Comments and replies together, with count.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
on_behalf_ofstring

Only user liked comments with this on behalf of.

Returns

Returns a list of Comment objects.

Status codes

200 401 403 500

GET/user-liked-comments/:skip
curl -X GET 'http://hristovtintdetailng.com/user-liked-comments/{skip}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "user": "6543210fedcba98765432100",
    "connected_account_user": "6543210fedcba98765432100",
    "commented_on": "6543210fedcba98765432100",
    "comment": "example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "replies": [
      {
        "comment": "example",
        "user": "6543210fedcba98765432100",
        "likes": [
          "6543210fedcba98765432101"
        ],
        "createdAt": "2026-11-04T12:00:00.000Z",
        "isHidden": false,
        "_id": "6543210fedcba98765432100"
      }
    ],
    "mentions": [
      "6543210fedcba98765432101"
    ],
    "isHidden": false,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Update the group remove user

Removes a user from a group (group, user). Only the group's owner.

User token

Needs the token of a signed-in user.

Parameters
groupstring

The group remove user's group.

userstring

The group remove user's user.

Status codes

200 400 401 403 404 500

PATCH/group-remove-user
curl -X PATCH 'http://hristovtintdetailng.com/group-remove-user?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "group": "...", "user": "..." }'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a group

Opens a group in the app (redirects to its app page). For links shared from the app: the website sends the visitor to the group in the app.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
idstringRequired

The ID of the group.

Status codes

200 500

GET/group/:id
curl -X GET 'http://hristovtintdetailng.com/group/{id}?ionic=true'
Response
{
  "zip_code": "example",
  "city": "example",
  "address": "example",
  "contact": "example",
  "email": "jane@example.com",
  "google_app": "example",
  "workhours": "example",
  "logo": "6543210fedcba98765432100",
  "site_name": "Example",
  "domain": "example",
  "stock_domain": "example",
  "isMarket": false,
  "forbidden_collections": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isInit": false,
  "template": "0000",
  "lang": "en",
  "favicon": "6543210fedcba98765432100",
  "cacheEnabled": false,
  "has_completed_startup_prompt": true,
  "gmb_location": "example",
  "ga_property": "example",
  "site_generated_at": "2026-11-04T12:00:00.000Z",
  "admin_first_opened_at": "2026-11-04T12:00:00.000Z",
  "admin_last_opened_at": "2026-11-04T12:00:00.000Z",
  "allowedComponents": {
    "services": false,
    "products": false,
    "blogposts": false,
    "programs": false
  }
}

Create a group

Creates a group. 403 when the site does not let this user create groups. Answers 201 with the group.

User token

Needs the token of a signed-in user.

Returns

Returns the Group object.

Status codes

201 400 401 403 500

POST/groups
curl -X POST 'http://hristovtintdetailng.com/groups?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a group

One group with the user's membership. 402 when the group needs a subscription the user lacks; 404 when there is no such group.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the group.

Returns

Returns the Group object.

Status codes

200 401 402 404 500

GET/groups/:id
curl -X GET 'http://hristovtintdetailng.com/groups/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a group

Updates a group. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the group.

Returns

Returns the Group object.

Status codes

200 400 401 403 404 500

PATCH/groups/:id
curl -X PATCH 'http://hristovtintdetailng.com/groups/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a group

Deletes a group. Only its owner (403 otherwise). Its posts are deleted with it.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the group.

Returns

Returns an empty answer on success.

Status codes

200 401 403 404 500

DELETE/groups/:id
curl -X DELETE 'http://hristovtintdetailng.com/groups/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all groups

Groups, the most active first, a page at a time. Answers { groups, count }.

Public

Public - no token needed.

Path parameters
skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Returns

Returns a list of Group objects.

Status codes

200 500

GET/groups/:skip/:limit
curl -X GET 'http://hristovtintdetailng.com/groups/{skip}/{limit}?ionic=true'
Response
[
  {
    "type": "example",
    "avatar": "6543210fedcba98765432100",
    "cover": "6543210fedcba98765432100",
    "name": "Example",
    "handle": "example",
    "bio": "example",
    "participants": [
      "6543210fedcba98765432101"
    ],
    "owner_id": "6543210fedcba98765432100",
    "who_can_post": "all",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Join a join group

Joins a group, or asks to join a private one (group). Answers 201 { group_join_request }: 'accepted' for a public group, 'pending' for a private one until its owner answers. 403 when a request is already pending.

User token

Needs the token of a signed-in user.

Parameters
groupstring

The join group's group.

Returns

Returns the Group object.

Status codes

201 400 401 403 404 500

POST/join-group
curl -X POST 'http://hristovtintdetailng.com/join-group?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "group": "..." }'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all groups

Groups the signed-in user is in, with their join requests. Answers { my_groups, joined_groups, canCreateGroups }.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Group objects.

Status codes

200 401 500

GET/my-groups
curl -X GET 'http://hristovtintdetailng.com/my-groups?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "type": "example",
    "avatar": "6543210fedcba98765432100",
    "cover": "6543210fedcba98765432100",
    "name": "Example",
    "handle": "example",
    "bio": "example",
    "participants": [
      "6543210fedcba98765432101"
    ],
    "owner_id": "6543210fedcba98765432100",
    "who_can_post": "all",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

List all groups

Groups whose name matches the words. Nine at a time.

Public

Public - no token needed.

Path parameters
argsstringRequired

The group's args.

skipstringRequired

How many results to skip - for paging.

Returns

Returns a list of Group objects.

Status codes

200 404 500

GET/search-groups/:args/:skip
curl -X GET 'http://hristovtintdetailng.com/search-groups/{args}/{skip}?ionic=true'
Response
[
  {
    "type": "example",
    "avatar": "6543210fedcba98765432100",
    "cover": "6543210fedcba98765432100",
    "name": "Example",
    "handle": "example",
    "bio": "example",
    "participants": [
      "6543210fedcba98765432101"
    ],
    "owner_id": "6543210fedcba98765432100",
    "who_can_post": "all",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Update a join request with AI

Accepts or refuses a request to join a group. Only the group's owner. Answers 201.

User token

Needs the token of a signed-in user.

Parameters
groupobjectid

Group.id the user asks to join.

userobjectid

User.id.

Returns

Returns the GroupJoinRequest object.

Status codes

201 400 401 403 404 500

PATCH/update-join-request-status
curl -X PATCH 'http://hristovtintdetailng.com/update-join-request-status?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "group": "...", "user": "..." }'
Response
{
  "group": "6543210fedcba98765432100",
  "user": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Add an add user

Adds users to a group conversation (users) and notifies them. Answers 201.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the add user.

Parameters
usersstring

The add user's users.

Status codes

201 400 401 404 500

PATCH/add-user/:id
curl -X PATCH 'http://hristovtintdetailng.com/add-user/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "users": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Connect a connect to room

Opens or joins the conversation between the signed-in user and another user or group. Answers 201 with the conversation (its room for the live connection), creating it the first time. 403 when the ids sent do not match the signed-in user.

User token

Needs the token of a signed-in user.

Parameters
mestring

The connect to room's me.

chatSupportstring

The connect to room's chat support.

receiver_idstring

The connect to room's receiver id.

userstring

The connect to room's user.

roomstring

The connect to room's room.

Status codes

201 400 401 403 500

POST/connect-to-room
curl -X POST 'http://hristovtintdetailng.com/connect-to-room?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "me": "...", "chatSupport": "...", "receiver_id": "...", "user": "...", "room": "..." }'
Response
{
  "on_behalf_of": "6543210fedcba98765432100",
  "user_account": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "is_authorized_to": {
    "create_posts": false,
    "send_messages": false,
    "answer_delete_comments": false,
    "access_engagements": false,
    "access_boosted_posts": false,
    "access_analytics": false,
    "alter_profile_settings": false
  }
}

Update a delete chat

Deletes a conversation for the signed-in user only. The other members keep the conversation and its messages.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the delete chat.

Parameters
user_idstring

The delete chat's user id.

Status codes

200 401 403 404 500

PATCH/delete-chat/:id
curl -X PATCH 'http://hristovtintdetailng.com/delete-chat/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "user_id": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Find a chat

The conversation with a product's seller, to ask about it. Answers { url } of the conversation in the app, or {} when there is none yet.

User token

Needs the token of a signed-in user.

Path parameters
product_idstringRequired

The chat's product id.

Status codes

200 401 500

GET/find-chat/:product_id
curl -X GET 'http://hristovtintdetailng.com/find-chat/{product_id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Leave a leave group

Leaves a group conversation. Earlier messages stay in the group. Answers 201.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the leave group.

Status codes

201 400 401 404 500

PATCH/leave-group/:id
curl -X PATCH 'http://hristovtintdetailng.com/leave-group/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a message event

A conversation's live events stream. 403 when the user is not in the conversation.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the message event.

Status codes

200 401 403 404 500

GET/message-event/:id
curl -X GET 'http://hristovtintdetailng.com/message-event/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update the message seen

Marks a conversation as read by the signed-in user. Answers { room }.

User token

Needs the token of a signed-in user.

Parameters
idstring

The ID of the message seen.

userstring

The message seen's user.

Status codes

200 400 401 500

PATCH/message-seen
curl -X PATCH 'http://hristovtintdetailng.com/message-seen?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "id": "...", "user": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all messages

The signed-in user's conversations. The most recently active first.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Message objects.

Status codes

200 401 500

GET/messages
curl -X GET 'http://hristovtintdetailng.com/messages?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "sender_id": "6543210fedcba98765432100",
    "receiver_id": "6543210fedcba98765432100",
    "product_id": "6543210fedcba98765432100",
    "service_id": "6543210fedcba98765432100",
    "isOpened": false,
    "blogpost_id": "6543210fedcba98765432100",
    "isDirectMessage": false,
    "message": [
      {
        "from": "6543210fedcba98765432100",
        "text": "Text shown on the site.",
        "createdAt": "example",
        "sent": false,
        "seen": false,
        "seen_by": [
          "6543210fedcba98765432101"
        ],
        "postId": "6543210fedcba98765432100",
        "userId": "6543210fedcba98765432100",
        "medias": [],
        "isSystem": false,
        "groupId": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "isGroup": false,
    "group_users": [
      "6543210fedcba98765432101"
    ],
    "current_group_users": [
      "6543210fedcba98765432101"
    ],
    "users_nicknames": [
      {
        "nickname": "Example",
        "user": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "group_avatar": "6543210fedcba98765432100",
    "group_name": "Example",
    "delete_chat": [
      {
        "isDeleted": false,
        "user": "6543210fedcba98765432100",
        "createdAt": "2026-11-04T12:00:00.000Z",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "program_id": "6543210fedcba98765432100",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Create a message

Creates a conversation. 403 "Message lenght limit exceeded!" for a message over the length limit. Answers 201 with the message.

User token

Needs the token of a signed-in user.

Parameters
messageobject[]

Message.

product_idobjectid

Product.id of product, that the message is about.

receiver_idobjectid

User.id of receiver.

service_idobjectid

Service.id.

blogpost_idobjectid

BlogPost.id.

program_idobjectid

Program.id.

isDirectMessageboolean

Between two users, not in a group.

postIdstring

The message's post id.

group_usersobjectid[]

Keeps the messages after user leaves the group.

isGroupboolean

A group conversation.

Returns

Returns the Message object.

Status codes

201 400 401 403 500

POST/messages
curl -X POST 'http://hristovtintdetailng.com/messages?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "message": "...", "product_id": "...", "receiver_id": "...", "service_id": "...", "blogpost_id": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a messages media

Pictures and files shared in a conversation, a page at a time. Answers { limitedPosts, limitedMedia, count }: shared posts and files.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the messages media.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Status codes

200 401 404 500

GET/messages-medias/:id&:skip&:limit
curl -X GET 'http://hristovtintdetailng.com/messages-medias/{id}&{skip}&{limit}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a message

Updates a conversation. Answers the updated conversation, or 404. Fields outside the allowed list are ignored.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the message.

Returns

Returns the Message object.

Status codes

200 400 401 404 500

PATCH/messages/:id
curl -X PATCH 'http://hristovtintdetailng.com/messages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a message

Deletes a conversation. Deletes the whole conversation for everyone, with no check of who asks beyond being signed in. Answers it, or 404.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the message.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/messages/:id
curl -X DELETE 'http://hristovtintdetailng.com/messages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a message

Messages of a conversation, a page at a time. Counted from the newest message. 404 when there is no such conversation.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the message.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Returns

Returns the Message object.

Status codes

200 401 404 500

GET/messages/:id&:skip&:limit
curl -X GET 'http://hristovtintdetailng.com/messages/{id}&{skip}&{limit}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a received in app message

One in-app notification, with its group. With who sent it and the post it is about.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the received in app message.

Status codes

200 400 404 500

GET/received-in-app-message/:id
curl -X GET 'http://hristovtintdetailng.com/received-in-app-message/{id}?ionic=true'
Response
{
  "type": "example",
  "title": "Example",
  "body": "Text shown on the site.",
  "owner_id": "6543210fedcba98765432100",
  "from": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "group": "6543210fedcba98765432100",
  "sendToAll": false,
  "comment": "6543210fedcba98765432100",
  "is_received": false,
  "is_seen": false,
  "url": "example-item",
  "image": "example",
  "service": "6543210fedcba98765432100",
  "product": "6543210fedcba98765432100",
  "blogpost": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "booking": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Send an in app message

Sends an in-app notification to users. Answers 201 { room, notification_id }. 500 "Notification already send." when the same notification was already sent.

User token

Needs the token of a signed-in user.

Parameters
typestring

The in app message's type.

comment_ownerstring

The in app message's comment owner.

item_idstring

The ID of the in app message to change.

action_doerstring

The in app message's action doer.

groupstring

The in app message's group.

owner_idstring

The in app message's owner id.

fromstring

The in app message's from.

messagestring

The in app message's message.

mentionedstring

The in app message's mentioned.

poststring

The in app message's post.

Status codes

201 400 401 500

POST/send-in-app-message
curl -X POST 'http://hristovtintdetailng.com/send-in-app-message?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "type": "...", "comment_owner": "...", "item_id": "...", "action_doer": "...", "group": "..." }'
Response
{
  "type": "example",
  "title": "Example",
  "body": "Text shown on the site.",
  "owner_id": "6543210fedcba98765432100",
  "from": "6543210fedcba98765432100",
  "post": "6543210fedcba98765432100",
  "group": "6543210fedcba98765432100",
  "sendToAll": false,
  "comment": "6543210fedcba98765432100",
  "is_received": false,
  "is_seen": false,
  "url": "example-item",
  "image": "example",
  "service": "6543210fedcba98765432100",
  "product": "6543210fedcba98765432100",
  "blogpost": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "booking": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Send a message

Sends a message in a conversation and notifies its members. Answers 201 with the sent message. Every other member gets a push notification. 403 when the sender may not write there.

User token

Needs the token of a signed-in user.

Parameters
fromstring

The message's from.

textstring

The message's text.

chatSupportstring

The message's chat support.

receiver_idobjectid

User.id of receiver.

tostring

The message's to.

roomstring

The message's room.

isDirectMessageboolean

Between two users, not in a group.

postIdstring

The message's post id.

userIdstring

The message's user id.

groupIdstring

The message's group id.

mediasstring

The message's medias.

Returns

Returns the Message object.

Status codes

201 400 401 403 500

POST/send-message
curl -X POST 'http://hristovtintdetailng.com/send-message?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "from": "...", "text": "...", "chatSupport": "...", "receiver_id": "...", "to": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a sent message

Deletes one of the signed-in user's messages. msg is the message's id inside the conversation.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the sent message.

msgstringRequired

The sent message's msg.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/sent-message/:id&:msg
curl -X DELETE 'http://hristovtintdetailng.com/sent-message/{id}&{msg}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update the user added

Adds the signed-in user to a group conversation. Answers { room }. 403 when the user was not invited.

User token

Needs the token of a signed-in user.

Parameters
roomstring

The user added's room.

usersstring

The user added's users.

Status codes

200 400 401 403 500

PATCH/user-added
curl -X PATCH 'http://hristovtintdetailng.com/user-added?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "room": "...", "users": "..." }'
Response
{
  "sender_id": "6543210fedcba98765432100",
  "receiver_id": "6543210fedcba98765432100",
  "product_id": "6543210fedcba98765432100",
  "service_id": "6543210fedcba98765432100",
  "isOpened": false,
  "blogpost_id": "6543210fedcba98765432100",
  "isDirectMessage": false,
  "message": [
    {
      "from": "6543210fedcba98765432100",
      "text": "Text shown on the site.",
      "createdAt": "example",
      "sent": false,
      "seen": false,
      "seen_by": [
        "6543210fedcba98765432101"
      ],
      "postId": "6543210fedcba98765432100",
      "userId": "6543210fedcba98765432100",
      "medias": [],
      "isSystem": false,
      "groupId": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isGroup": false,
  "group_users": [
    "6543210fedcba98765432101"
  ],
  "current_group_users": [
    "6543210fedcba98765432101"
  ],
  "users_nicknames": [
    {
      "nickname": "Example",
      "user": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "group_avatar": "6543210fedcba98765432100",
  "group_name": "Example",
  "delete_chat": [
    {
      "isDeleted": false,
      "user": "6543210fedcba98765432100",
      "createdAt": "2026-11-04T12:00:00.000Z",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "program_id": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all partners

Get partners, optionally searched, filtered, sorted and paged. Renders the locations page; JSON with ?ionic. Search, category filters, sorting and paging come from the query.

Optional user

Works without a token; with a user token the answer is personal.

Status codes

200 500

GET/partners
curl -X GET 'http://hristovtintdetailng.com/partners?ionic=true'

Create a partner

Creates a location or partner. Answers 201 with the location.

Admin token

Needs a site admin token.

Returns

Returns the Partner object.

Status codes

201 400 401 500

POST/partners
curl -X POST 'http://hristovtintdetailng.com/partners?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "venue": "example",
  "venue_types": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "city": "example",
  "country": "example",
  "address": "example",
  "contact": "example",
  "additional_information": "example",
  "phone": "+359 888 123 456",
  "email": "jane@example.com",
  "website": "example",
  "hours": "example",
  "latitude": 1,
  "longitude": 1,
  "formatted_address": "example",
  "geo_status": "pending",
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a partner

One location or partner. With its venue types. 404 when there is no such location.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the partner.

Returns

Returns the Partner object.

Status codes

200 404 500

GET/partners/:id
curl -X GET 'http://hristovtintdetailng.com/partners/{id}?ionic=true'
Response
{
  "name": "Example",
  "venue": "example",
  "venue_types": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "city": "example",
  "country": "example",
  "address": "example",
  "contact": "example",
  "additional_information": "example",
  "phone": "+359 888 123 456",
  "email": "jane@example.com",
  "website": "example",
  "hours": "example",
  "latitude": 1,
  "longitude": 1,
  "formatted_address": "example",
  "geo_status": "pending",
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a partner

Updates a location or partner. Answers the location, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the partner.

Parameters
addressstring

Street address.

citystring

City.

countrystring

Not required - records created before the split still carry the country inside city, and forcing it would reject every update to them.

Returns

Returns the Partner object.

Status codes

200 400 401 404 500

PATCH/partners/:id
curl -X PATCH 'http://hristovtintdetailng.com/partners/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "address": "...", "city": "...", "country": "..." }'
Response
{
  "name": "Example",
  "venue": "example",
  "venue_types": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "city": "example",
  "country": "example",
  "address": "example",
  "contact": "example",
  "additional_information": "example",
  "phone": "+359 888 123 456",
  "email": "jane@example.com",
  "website": "example",
  "hours": "example",
  "latitude": 1,
  "longitude": 1,
  "formatted_address": "example",
  "geo_status": "pending",
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a partner

Deletes a location or partner. Answers the deleted location, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the partner.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/partners/:id
curl -X DELETE 'http://hristovtintdetailng.com/partners/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the avg cost per action

The average cost per action of ads with a given targeting (?interests, ?languages, ?keywords...). Answers { cost_per_click, cost_per_mile } from earlier ads with a similar targeting, to estimate a boost.

User token

Needs the token of a signed-in user.

Query parameters
interestsstring

Only avg cost per actions with this interests.

app_categoriesstring

Only avg cost per actions with this app categories.

languagesstring

Only avg cost per actions with this languages.

keywordsstring

Only avg cost per actions with this keywords.

user_economicsstring

Only avg cost per actions with this user economics.

user_educationstring

Only avg cost per actions with this user education.

marital_statusstring

Only avg cost per actions with this marital status.

agesstring

Only avg cost per actions with this ages.

sexesstring

Only avg cost per actions with this sexes.

Status codes

200 401 500

GET/avg-cost-per-action
curl -X GET 'http://hristovtintdetailng.com/avg-cost-per-action?ionic=true&interests=...&app_categories=...&languages=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a boost user post

Boosts a post as an ad with its targeting, or edits a boost (?edit). The boost is paid from the user's wallet: 400 "Insufficient funds." when it does not cover the budget. Answers the post.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the boost user post.

Query parameters
on_behalf_ofstring

Only boost user posts with this on behalf of.

editstring

Only boost user posts with this edit.

Parameters
interestsstring[]

From Google Segments.

app_categoriesstring

The boost user post's app categories.

languagesstring

The boost user post's languages.

keywordsstring[]

Words it is found by.

user_economicsstring

Low, middle, high.

user_educationstring

Low, middle, high.

marital_statusstring

Single, married.

agesstring

The boost user post's ages.

sexesstring

The boost user post's sexes.

cost_per_clickstring

The boost user post's cost per click.

cost_per_milestring

The boost user post's cost per mile.

created_onstring

The boost user post's created on.

durationstring

The boost user post's duration.

days_leftstring

The boost user post's days left.

daily_budgetstring

The boost user post's daily budget.

outer_linkstring

The boost user post's outer link.

targetingstring

The boost user post's targeting.

isAdvertismentboolean

A paid ad.

Returns

Returns the Post object.

Status codes

200 400 401 403 404 500

PATCH/boost-user-post/:id
curl -X PATCH 'http://hristovtintdetailng.com/boost-user-post/{id}?ionic=true&on_behalf_of=...&edit=...' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "interests": "...", "app_categories": "...", "languages": "...", "keywords": "...", "user_economics": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all boosted posts

The user's boosted posts with their pixel results, or those of an account they manage (?on_behalf_of). Newest boost first. 403 for an account the user may not act for.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only boosted posts with this on behalf of.

Returns

Returns a list of Post objects.

Status codes

200 401 403 500

GET/boosted-posts
curl -X GET 'http://hristovtintdetailng.com/boosted-posts?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "posted_by": "6543210fedcba98765432100",
    "repost_of": "6543210fedcba98765432100",
    "connected_account_posted_by": "6543210fedcba98765432100",
    "text": "Text shown on the site.",
    "title": "Example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "shares": [
      {
        "from": "6543210fedcba98765432100",
        "to": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "views": [
      "6543210fedcba98765432101"
    ],
    "comments": [
      "6543210fedcba98765432101"
    ],
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "transcode_status": "not_started",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "keywords": [
      "example"
    ],
    "emotion": "example",
    "political_spectrum": "example",
    "explicit": "example",
    "harmful": "example",
    "propaganda": "example",
    "advertisement": "example",
    "engaging": "example",
    "language": "en",
    "interests": [
      "example"
    ],
    "app_category": [
      "example"
    ],
    "user_profile": [
      "example"
    ],
    "user_economics": "example",
    "user_education": "example",
    "thumbnail": {
      "media": "example"
    },
    "targeting": {
      "keywords": "example",
      "language": "en",
      "interests": "example",
      "app_category": "example",
      "user_economics": "example",
      "user_education": "example",
      "marital_status": "example",
      "age": "example",
      "sex": "example",
      "isCpc": false,
      "cost_per_click": 0
    }
  }
]

Update a boost user post

Stops a post's boost. Answers { returnCredits }: the unspent budget returned to the wallet.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the boost user post.

Query parameters
on_behalf_ofstring

Only boost user posts with this on behalf of.

Returns

Returns the Post object.

Status codes

200 400 401 403 404 500

PATCH/cancel-boost-user-post/:id
curl -X PATCH 'http://hristovtintdetailng.com/cancel-boost-user-post/{id}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all expirable posts

Stories from who the user follows.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

feedstringRequired

The expirable post's feed.

usersstringRequired

The expirable post's users.

Status codes

200 401 500

GET/expirable-posts/:skip&:feed&:users
curl -X GET 'http://hristovtintdetailng.com/expirable-posts/{skip}&{feed}&{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all following suggestions

Users to follow, by the signed-in user's interests. Ten users, with the interests they were picked by.

User token

Needs the token of a signed-in user.

Status codes

200 401 500

GET/following-suggestions
curl -X GET 'http://hristovtintdetailng.com/following-suggestions?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all group feeds

A group's posts, when the user may see the group. Answers { posts, length }. A private group answers 401 until the user's join request is accepted, with group_join_request pending or rejected. Cached per user for 5 minutes.

User token

Needs the token of a signed-in user.

Path parameters
groupstringRequired

The group feed's group.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Status codes

200 401 500

GET/group-feed/:group/:skip/:limit
curl -X GET 'http://hristovtintdetailng.com/group-feed/{group}/{skip}/{limit}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a long video avg percentage viewed insight

The average share of a long video that viewers watch. Answers { insights }.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the long video avg percentage viewed insight.

Status codes

200 401 500

GET/long-video-avg-percentage-viewed-insights/:id
curl -X GET 'http://hristovtintdetailng.com/long-video-avg-percentage-viewed-insights/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a long video engagement insight

Engagement of a long video: watch time against views, likes and comments. Answers { insights }.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the long video engagement insight.

Status codes

200 401 500

GET/long-video-engagement-insights/:id
curl -X GET 'http://hristovtintdetailng.com/long-video-engagement-insights/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "start": 1,
  "end": 1,
  "watch_time": 1,
  "video_viewer": "6543210fedcba98765432100",
  "video_id": "6543210fedcba98765432100",
  "video_owner": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a long video total watchtime insight

Total watch time of a long video. Answers { insights }.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the long video total watchtime insight.

Status codes

200 401 500

GET/long-video-total-watchtime-insights/:id
curl -X GET 'http://hristovtintdetailng.com/long-video-total-watchtime-insights/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "start": 1,
  "end": 1,
  "watch_time": 1,
  "video_viewer": "6543210fedcba98765432100",
  "video_id": "6543210fedcba98765432100",
  "video_owner": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Record a view of a long video days insight

Views of a long video per day over the last days. Answers { insights }: one entry per day.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the long video days insight.

daysstringRequired

The long video days insight's days.

Status codes

200 401 500

GET/long-video-views-by-days-insights/:id&:days
curl -X GET 'http://hristovtintdetailng.com/long-video-views-by-days-insights/{id}&{days}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "start": 1,
  "end": 1,
  "watch_time": 1,
  "video_viewer": "6543210fedcba98765432100",
  "video_id": "6543210fedcba98765432100",
  "video_owner": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a long video watchtime days insight

Watch time of a long video per day over the last days. Answers { insights }: one entry per day.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the long video watchtime days insight.

daysstringRequired

The long video watchtime days insight's days.

Status codes

200 401 500

GET/long-video-watchtime-by-days-insights/:id&:days
curl -X GET 'http://hristovtintdetailng.com/long-video-watchtime-by-days-insights/{id}&{days}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "start": 1,
  "end": 1,
  "watch_time": 1,
  "video_viewer": "6543210fedcba98765432100",
  "video_id": "6543210fedcba98765432100",
  "video_owner": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all feeds

The signed-in user's own posts, a page at a time. Answers { posts, length }, newest first, each with what it is attached to (a product, a group...).

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Status codes

200 401 500

GET/my-feed/:skip/:limit
curl -X GET 'http://hristovtintdetailng.com/my-feed/{skip}/{limit}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all videos

The signed-in user's video posts. Video posts only.

User token

Needs the token of a signed-in user.

Status codes

200 401 404 500

GET/my-videos
curl -X GET 'http://hristovtintdetailng.com/my-videos?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update the pin group post

Pins or unpins a post in a group (the group's admin) and notifies its author. Answers { isPinned }. 403 when the user is not the group's admin.

User token

Needs the token of a signed-in user.

Path parameters
poststringRequired

The pin group post's post.

groupstringRequired

The pin group post's group.

Returns

Returns the Post object.

Status codes

200 401 403 404 500

PATCH/pin-group-post/:post/:group
curl -X PATCH 'http://hristovtintdetailng.com/pin-group-post/{post}/{group}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all post campaigns

The user's ad campaigns with their pixel results. Newest first. 403 for an account the user may not act for.

User token

Needs the token of a signed-in user.

Query parameters
on_behalf_ofstring

Only post campaigns with this on behalf of.

Status codes

200 401 403 500

GET/post-campaigns
curl -X GET 'http://hristovtintdetailng.com/post-campaigns?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "on_behalf_of": "6543210fedcba98765432100",
  "user_account": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "is_authorized_to": {
    "create_posts": false,
    "send_messages": false,
    "answer_delete_comments": false,
    "access_engagements": false,
    "access_boosted_posts": false,
    "access_analytics": false,
    "alter_profile_settings": false
  }
}

Update the post comment

Adds or removes a comment's reference on a post. Answers with no body.

User token

Needs the token of a signed-in user.

Path parameters
poststringRequired

The post comment's post.

commentstringRequired

The post comment's comment.

Status codes

200 400 401 500

PATCH/post-comments/:post&:comment
curl -X PATCH 'http://hristovtintdetailng.com/post-comments/{post}&{comment}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a post cta click

Counts a click on a post's call-to-action. One per user.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post cta click.

Status codes

200 400 401 500

PATCH/post-cta-clicks/:id
curl -X PATCH 'http://hristovtintdetailng.com/post-cta-clicks/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a post feed

Posts to show after one post, by interests, with ads. Answers { posts, length, location_ads_skip, ads_skip }.

User token

Needs the token of a signed-in user.

Path parameters
postsstringRequired

The post feed's posts.

popularstringRequired

The post feed's popular.

adsstringRequired

The post feed's ads.

original_post_idstringRequired

The post feed's original post id.

location_adsstringRequired

The post feed's location ads.

Status codes

200 401 500

GET/post-feed/:posts&:popular&:ads&:original_post_id&:location_ads
curl -X GET 'http://hristovtintdetailng.com/post-feed/{posts}&{popular}&{ads}&{original_post_id}&{location_ads}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a post insight

A post's insights: views, reach, likes, shares, saves and clicks over time. 403 when the post is not the user's or an account's they manage.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post insight.

Query parameters
on_behalf_ofstring

Only post insights with this on behalf of.

Status codes

200 401 403 500

GET/post-insights/:id
curl -X GET 'http://hristovtintdetailng.com/post-insights/{id}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "on_behalf_of": "6543210fedcba98765432100",
  "user_account": "6543210fedcba98765432100",
  "status": "pending",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "is_authorized_to": {
    "create_posts": false,
    "send_messages": false,
    "answer_delete_comments": false,
    "access_engagements": false,
    "access_boosted_posts": false,
    "access_analytics": false,
    "alter_profile_settings": false
  }
}

Update a post poll

Votes in a post's poll (answer), once per user. 403 "User already voted."

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post poll.

Parameters
answerstring

The post poll's answer.

Status codes

200 400 401 403 500

PATCH/post-poll/:id
curl -X PATCH 'http://hristovtintdetailng.com/post-poll/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "answer": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a post reach

Counts that a post reached the signed-in user. One per user.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post reach.

Status codes

200 400 401 500

PATCH/post-reach/:id
curl -X PATCH 'http://hristovtintdetailng.com/post-reach/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a post times showed

Counts that a post was shown in a feed. Answers with no body.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post times showed.

Status codes

200 400 401 500

PATCH/post-times-showed/:id
curl -X PATCH 'http://hristovtintdetailng.com/post-times-showed/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Record a view of a post

Counts a view of a post by the signed-in user. One view per user. Counts as an interaction, which feeds its ranking.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the post.

Returns

Returns the Post object.

Status codes

200 400 401 500

PATCH/post-views/:id
curl -X PATCH 'http://hristovtintdetailng.com/post-views/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a post

Opens a post in the app (redirects to the app's post page). The website has no post page of its own; see /static-post for a shareable one.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
idstringRequired

The ID of the post.

Status codes

200 500

GET/post/:id
curl -X GET 'http://hristovtintdetailng.com/post/{id}?ionic=true'
Response
{
  "zip_code": "example",
  "city": "example",
  "address": "example",
  "contact": "example",
  "email": "jane@example.com",
  "google_app": "example",
  "workhours": "example",
  "logo": "6543210fedcba98765432100",
  "site_name": "Example",
  "domain": "example",
  "stock_domain": "example",
  "isMarket": false,
  "forbidden_collections": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isInit": false,
  "template": "0000",
  "lang": "en",
  "favicon": "6543210fedcba98765432100",
  "cacheEnabled": false,
  "has_completed_startup_prompt": true,
  "gmb_location": "example",
  "ga_property": "example",
  "site_generated_at": "2026-11-04T12:00:00.000Z",
  "admin_first_opened_at": "2026-11-04T12:00:00.000Z",
  "admin_last_opened_at": "2026-11-04T12:00:00.000Z",
  "allowedComponents": {
    "services": false,
    "products": false,
    "blogposts": false,
    "programs": false
  }
}

List all price plan posts

Subscriber-only posts of creators the user subscribes to. Nine at a time, newest first, with each post's plans.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Returns

Returns a list of Post objects.

Status codes

200 401 500

GET/price-plan-posts/:skip
curl -X GET 'http://hristovtintdetailng.com/price-plan-posts/{skip}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "posted_by": "6543210fedcba98765432100",
    "repost_of": "6543210fedcba98765432100",
    "connected_account_posted_by": "6543210fedcba98765432100",
    "text": "Text shown on the site.",
    "title": "Example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "shares": [
      {
        "from": "6543210fedcba98765432100",
        "to": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "views": [
      "6543210fedcba98765432101"
    ],
    "comments": [
      "6543210fedcba98765432101"
    ],
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "transcode_status": "not_started",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "keywords": [
      "example"
    ],
    "emotion": "example",
    "political_spectrum": "example",
    "explicit": "example",
    "harmful": "example",
    "propaganda": "example",
    "advertisement": "example",
    "engaging": "example",
    "language": "en",
    "interests": [
      "example"
    ],
    "app_category": [
      "example"
    ],
    "user_profile": [
      "example"
    ],
    "user_economics": "example",
    "user_education": "example",
    "thumbnail": {
      "media": "example"
    },
    "targeting": {
      "keywords": "example",
      "language": "en",
      "interests": "example",
      "app_category": "example",
      "user_economics": "example",
      "user_education": "example",
      "marital_status": "example",
      "age": "example",
      "sex": "example",
      "isCpc": false,
      "cost_per_click": 0
    }
  }
]

List all profile feeds

A user's posts from one post on, for scrolling their profile. Answers { posts, length }.

User token

Needs the token of a signed-in user.

Path parameters
userstringRequired

The profile feed's user.

poststringRequired

The profile feed's post.

skipstringRequired

How many results to skip - for paging.

Status codes

200 401 500

GET/profile-feed/:user&:post&:skip
curl -X GET 'http://hristovtintdetailng.com/profile-feed/{user}&{post}&{skip}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all feeds

The newest posts, skipping banned users. Answers { posts, postCount }.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

usersstringRequired

The feed's users.

Status codes

200 401 500

GET/recent-feed/:skip&:users
curl -X GET 'http://hristovtintdetailng.com/recent-feed/{skip}&{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Remove a remove thread post

Takes a post out of its thread. Answers with no body.

User token

Needs the token of a signed-in user.

Path parameters
poststringRequired

The remove thread post's post.

Returns

Returns the Post object.

Status codes

200 400 401 500

PATCH/remove-thread-post/:post
curl -X PATCH 'http://hristovtintdetailng.com/remove-thread-post/{post}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all saved posts

Posts the signed-in user saved. With each post's plans, when it is subscriber-only.

User token

Needs the token of a signed-in user.

Returns

Returns a list of Post objects.

Status codes

200 401 500

GET/saved-posts
curl -X GET 'http://hristovtintdetailng.com/saved-posts?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "posted_by": "6543210fedcba98765432100",
    "repost_of": "6543210fedcba98765432100",
    "connected_account_posted_by": "6543210fedcba98765432100",
    "text": "Text shown on the site.",
    "title": "Example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "shares": [
      {
        "from": "6543210fedcba98765432100",
        "to": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "views": [
      "6543210fedcba98765432101"
    ],
    "comments": [
      "6543210fedcba98765432101"
    ],
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "transcode_status": "not_started",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "keywords": [
      "example"
    ],
    "emotion": "example",
    "political_spectrum": "example",
    "explicit": "example",
    "harmful": "example",
    "propaganda": "example",
    "advertisement": "example",
    "engaging": "example",
    "language": "en",
    "interests": [
      "example"
    ],
    "app_category": [
      "example"
    ],
    "user_profile": [
      "example"
    ],
    "user_economics": "example",
    "user_education": "example",
    "thumbnail": {
      "media": "example"
    },
    "targeting": {
      "keywords": "example",
      "language": "en",
      "interests": "example",
      "app_category": "example",
      "user_economics": "example",
      "user_education": "example",
      "marital_status": "example",
      "age": "example",
      "sex": "example",
      "isCpc": false,
      "cost_per_click": 0
    }
  }
]

Create a sponsored post attribution

Attributes an ad interaction to a user (post_id, attributed_user_id). Charges the ad's budget for one click (or a thousand views) and credits 10% of that to the attributed user as revenue (see /user-attributions). Does nothing for a post that is not a running ad.

User token

Needs the token of a signed-in user.

Parameters
post_idstring

The sponsored post attribution's post id.

attributed_user_idstring

The sponsored post attribution's attributed user id.

Status codes

200 401 500

POST/sponsored-post-attributions
curl -X POST 'http://hristovtintdetailng.com/sponsored-post-attributions?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "post_id": "...", "attributed_user_id": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a static post

A post's shareable page, with its comments. For link previews and visitors without the app: a server-rendered page with the post's meta tags. Cached for an hour.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the static post.

Returns

Returns the Post object.

Status codes

200 404 500

GET/static-post/:id
curl -X GET 'http://hristovtintdetailng.com/static-post/{id}?ionic=true'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a static profile

A user's shareable profile page, with their posts, products and services. Server-rendered with the profile's meta tags, for link previews. Cached for an hour.

Public

Public - no token needed.

Path parameters
handlestringRequired

The static profile's handle.

Status codes

200 404 500

GET/static-profile/:handle
curl -X GET 'http://hristovtintdetailng.com/static-profile/{handle}?ionic=true'
Response
{
  "name": "Example",
  "email": "jane@example.com",
  "avatar": "6543210fedcba98765432100",
  "social_avatar": "example",
  "isAdmin": false,
  "isStaff": false,
  "owner_id": "6543210fedcba98765432100",
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "isConfirmed": false,
  "number_of_sales": 0,
  "stripe_id": "example",
  "paypal_id": "example",
  "access_level": 1,
  "validation_code": "example",
  "can_edit": {
    "site": false,
    "crm": false,
    "store": false,
    "payments": false,
    "staff": false
  },
  "ip_location": {
    "city": "example",
    "continent_name": "Example",
    "country_name": "Example",
    "country_subdivision": "example",
    "location_latitude": 0,
    "location_longitude": 0,
    "last_updated": "example"
  }
}

List all threads

The threads feed: text posts from who the user follows and by interest. Answers { posts, length }.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

usersstringRequired

The thread's users.

Status codes

200 401 500

GET/threads/:skip&:users
curl -X GET 'http://hristovtintdetailng.com/threads/{skip}&{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update the repost

Adds a repost to a post's reposts. Answers with no body.

User token

Needs the token of a signed-in user.

Path parameters
poststringRequired

The repost's post.

repoststringRequired

The repost's repost.

Returns

Returns the Post object.

Status codes

200 400 401 500

PATCH/update-repost/:post&:repost
curl -X PATCH 'http://hristovtintdetailng.com/update-repost/{post}&{repost}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all user exclusive feeds

A user's subscriber-only posts, when the visitor subscribes to them. Answers { posts, length }, newest first, with the plans that open them.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
userstringRequired

The user exclusive feed's user.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Status codes

200 500

GET/user-exclusive-feed/:user/:skip/:limit
curl -X GET 'http://hristovtintdetailng.com/user-exclusive-feed/{user}/{skip}/{limit}?ionic=true'
Response
{
  "stripe_subscription_id": "example",
  "user_id": "6543210fedcba98765432100",
  "status": 0,
  "payment_intent_id": "example",
  "price_plan": "6543210fedcba98765432100",
  "rating_mail_sent": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user expirable posts

A user's current stories, with what they are attached to. Newest first.

User token

Needs the token of a signed-in user.

Path parameters
userstringRequired

The user expirable post's user.

Returns

Returns a list of Post objects.

Status codes

200 401 500

GET/user-expirable-posts/:user
curl -X GET 'http://hristovtintdetailng.com/user-expirable-posts/{user}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "posted_by": "6543210fedcba98765432100",
    "repost_of": "6543210fedcba98765432100",
    "connected_account_posted_by": "6543210fedcba98765432100",
    "text": "Text shown on the site.",
    "title": "Example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "shares": [
      {
        "from": "6543210fedcba98765432100",
        "to": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "views": [
      "6543210fedcba98765432101"
    ],
    "comments": [
      "6543210fedcba98765432101"
    ],
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "transcode_status": "not_started",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "keywords": [
      "example"
    ],
    "emotion": "example",
    "political_spectrum": "example",
    "explicit": "example",
    "harmful": "example",
    "propaganda": "example",
    "advertisement": "example",
    "engaging": "example",
    "language": "en",
    "interests": [
      "example"
    ],
    "app_category": [
      "example"
    ],
    "user_profile": [
      "example"
    ],
    "user_economics": "example",
    "user_education": "example",
    "thumbnail": {
      "media": "example"
    },
    "targeting": {
      "keywords": "example",
      "language": "en",
      "interests": "example",
      "app_category": "example",
      "user_economics": "example",
      "user_education": "example",
      "marital_status": "example",
      "age": "example",
      "sex": "example",
      "isCpc": false,
      "cost_per_click": 0
    }
  }
]

List all user feeds

A user's posts that everyone may see, a page at a time. Answers { posts, length }, newest first. Subscriber-only posts are left out: see /user-exclusive-feed.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
userstringRequired

The user feed's user.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Status codes

200 500

GET/user-feed/:user/:skip/:limit
curl -X GET 'http://hristovtintdetailng.com/user-feed/{user}/{skip}/{limit}?ionic=true'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

List all user group feeds

Posts from the user's groups and public groups. Answers { posts, length }, newest first.

User token

Needs the token of a signed-in user.

Path parameters
postsstringRequired

The user group feed's posts.

public_groupsstringRequired

The user group feed's public groups.

usersstringRequired

The user group feed's users.

Status codes

200 401 500

GET/user-group-feed/:posts&:public_groups&:users
curl -X GET 'http://hristovtintdetailng.com/user-group-feed/{posts}&{public_groups}&{users}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "type": "example",
  "avatar": "6543210fedcba98765432100",
  "cover": "6543210fedcba98765432100",
  "name": "Example",
  "handle": "example",
  "bio": "example",
  "participants": [
    "6543210fedcba98765432101"
  ],
  "owner_id": "6543210fedcba98765432100",
  "who_can_post": "all",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all user liked posts

Posts the signed-in user liked, a page at a time. Answers { posts, postCount }. 403 for an account the user may not act for.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Query parameters
on_behalf_ofstring

Only user liked posts with this on behalf of.

Returns

Returns a list of Post objects.

Status codes

200 401 403 500

GET/user-liked-posts/:skip
curl -X GET 'http://hristovtintdetailng.com/user-liked-posts/{skip}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "posted_by": "6543210fedcba98765432100",
    "repost_of": "6543210fedcba98765432100",
    "connected_account_posted_by": "6543210fedcba98765432100",
    "text": "Text shown on the site.",
    "title": "Example",
    "likes": [
      "6543210fedcba98765432101"
    ],
    "shares": [
      {
        "from": "6543210fedcba98765432100",
        "to": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "views": [
      "6543210fedcba98765432101"
    ],
    "comments": [
      "6543210fedcba98765432101"
    ],
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "transcode_status": "not_started",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "keywords": [
      "example"
    ],
    "emotion": "example",
    "political_spectrum": "example",
    "explicit": "example",
    "harmful": "example",
    "propaganda": "example",
    "advertisement": "example",
    "engaging": "example",
    "language": "en",
    "interests": [
      "example"
    ],
    "app_category": [
      "example"
    ],
    "user_profile": [
      "example"
    ],
    "user_economics": "example",
    "user_education": "example",
    "thumbnail": {
      "media": "example"
    },
    "targeting": {
      "keywords": "example",
      "language": "en",
      "interests": "example",
      "app_category": "example",
      "user_economics": "example",
      "user_education": "example",
      "marital_status": "example",
      "age": "example",
      "sex": "example",
      "isCpc": false,
      "cost_per_click": 0
    }
  }
]

Retrieve a user long video ad

Ads to show in a long video, by the viewer's interests and location. Ads by interest first, then by location.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
idstringRequired

The ID of the user long video ad.

Status codes

200 404 500

GET/user-long-video-ads/:id
curl -X GET 'http://hristovtintdetailng.com/user-long-video-ads/{id}?ionic=true'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Create a user post

Publishes a post by the signed-in user (text, title, medias, poll, group), checks its pictures for explicit content and queues its videos for transcoding. 403 when the text or title is too long, 404 when the group does not exist. Pictures are checked for explicit content and given an AI caption; videos are queued for transcoding and the post fills in when they are ready.

User token

Needs the token of a signed-in user.

Parameters
textstring

The post's text.

titlestring

The post's title.

posted_inobjectid

Group.id.

selected_account_idstring

The user post's selected account id.

mediasobject[]

Pictures and videos of the post.

exclusiveboolean

Only for subscribers.

mentionsobjectid[]

User ids.

transcodestring

The user post's transcode.

linkstring

The user post's link.

Returns

Returns the Post object.

Status codes

201 400 401 403 404 500

POST/user-post
curl -X POST 'http://hristovtintdetailng.com/user-post?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "text": "...", "title": "...", "posted_in": "...", "selected_account_id": "...", "medias": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Like or unlike a user post

Likes, dislikes or takes back a reaction on a post, and notifies its author. Sending the same reaction again takes it back. Answers the post. Counts as an interaction, which feeds its ranking.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user post.

Parameters
likesobjectid[]

User ids.

dislikesobjectid[]

User ids.

Returns

Returns the Post object.

Status codes

200 400 401 404 500

PATCH/user-post-like/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-post-like/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "likes": "...", "dislikes": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Create a user post link

A link's preview for a post (link): its Open Graph title, picture and site name. The page is fetched by the server. Cached for an hour.

Optional userUser token

Works without a token; with a user token the answer is personal.

Parameters
linkstring

The user post link's link.

Status codes

200 401 500

POST/user-post-link-preview
curl -X POST 'http://hristovtintdetailng.com/user-post-link-preview?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "link": "..." }'

Retrieve a user post object

The product, service, post or program a post is attached to. 404 when there is no such post. Cached per user for 5 minutes.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
idstringRequired

The ID of the user post object.

Status codes

200 404 500

GET/user-post-object/:id
curl -X GET 'http://hristovtintdetailng.com/user-post-object/{id}?ionic=true'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Save or unsave a user post

Saves or unsaves a post for the signed-in user. Calling it again unsaves. Answers the post.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user post.

Returns

Returns the Post object.

Status codes

200 400 401 404 500

PATCH/user-post-save/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-post-save/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a user post share

Records that the signed-in user shared a post (share). Answers the post.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user post share.

Parameters
sharestring

The user post share's share.

Status codes

200 400 401 404 500

PATCH/user-post-share/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-post-share/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "share": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Retrieve a user post

One post with its comments and more posts to show after it. 404 when there is no such post. Cached for 5 minutes.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
idstringRequired

The ID of the user post.

Returns

Returns the Post object.

Status codes

200 404 500

GET/user-post/:id
curl -X GET 'http://hristovtintdetailng.com/user-post/{id}?ionic=true'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Update a user post

Edits a post of the signed-in user, or of an account they manage (?on_behalf_of), and notifies new mentions. 403 "Unauthorized" when the post is not the user's or an account's they manage. Answers the updated post.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user post.

Query parameters
on_behalf_ofstring

Only user posts with this on behalf of.

Parameters
mentionsobjectid[]

User ids.

Returns

Returns the Post object.

Status codes

200 400 401 403 404 500

PATCH/user-post/:id
curl -X PATCH 'http://hristovtintdetailng.com/user-post/{id}?ionic=true&on_behalf_of=...' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "mentions": "..." }'
Response
{
  "posted_by": "6543210fedcba98765432100",
  "repost_of": "6543210fedcba98765432100",
  "connected_account_posted_by": "6543210fedcba98765432100",
  "text": "Text shown on the site.",
  "title": "Example",
  "likes": [
    "6543210fedcba98765432101"
  ],
  "shares": [
    {
      "from": "6543210fedcba98765432100",
      "to": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "views": [
    "6543210fedcba98765432101"
  ],
  "comments": [
    "6543210fedcba98765432101"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "transcode_status": "not_started",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "keywords": [
    "example"
  ],
  "emotion": "example",
  "political_spectrum": "example",
  "explicit": "example",
  "harmful": "example",
  "propaganda": "example",
  "advertisement": "example",
  "engaging": "example",
  "language": "en",
  "interests": [
    "example"
  ],
  "app_category": [
    "example"
  ],
  "user_profile": [
    "example"
  ],
  "user_economics": "example",
  "user_education": "example",
  "thumbnail": {
    "media": "example"
  },
  "targeting": {
    "keywords": "example",
    "language": "en",
    "interests": "example",
    "app_category": "example",
    "user_economics": "example",
    "user_education": "example",
    "marital_status": "example",
    "age": "example",
    "sex": "example",
    "isCpc": false,
    "cost_per_click": 0
  }
}

Delete a user post

Deletes a post with its comments and media (its author or the group's admin). Its comments and stored media are deleted with it. 403 when the user is neither its author nor the group's admin.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the user post.

Returns

Returns an empty answer on success.

Status codes

200 401 403 404 500

DELETE/user-post/:id
curl -X DELETE 'http://hristovtintdetailng.com/user-post/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

List all viewed expirable posts

Stories the user has already seen.

User token

Needs the token of a signed-in user.

Path parameters
skipstringRequired

How many results to skip - for paging.

Status codes

200 401 500

GET/viewed-expirable-posts/:skip
curl -X GET 'http://hristovtintdetailng.com/viewed-expirable-posts/{skip}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a rating

An item's ratings page, a page at a time. Answers { ratings, count } in the app. 404 when the item does not exist.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the rating.

itemstringRequired

The rating's item.

skipstringRequired

How many results to skip - for paging.

limitstringRequired

How many results to return.

Returns

Returns the Rating object.

Status codes

200 400 404 500

GET/all-ratings/:id&:item&:skip&:limit
curl -X GET 'http://hristovtintdetailng.com/all-ratings/{id}&{item}&{skip}&{limit}?ionic=true'
Response
{
  "email": "jane@example.com",
  "text": "Text shown on the site.",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "stars": 1,
  "product": "6543210fedcba98765432100",
  "service": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "price_plan": "6543210fedcba98765432100",
  "name": "Example",
  "miniapp": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a rating

Saves a rating with its pictures. Multipart with pictures. Reads no token: it comes from the rating email's page. Answers 201.

Public

Public - no token needed.

Parameters
bodystring

The rating's body.

Returns

Returns the Rating object.

Status codes

201 400 500

POST/rating
curl -X POST 'http://hristovtintdetailng.com/rating?ionic=true' \
  -H 'Content-Type: application/json' \
  -d '{ "body": "..." }'
Response
{
  "email": "jane@example.com",
  "text": "Text shown on the site.",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "stars": 1,
  "product": "6543210fedcba98765432100",
  "service": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "price_plan": "6543210fedcba98765432100",
  "name": "Example",
  "miniapp": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a rating

One rating. Answers the rating.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the rating.

Returns

Returns the Rating object.

Status codes

200 400 401 500

GET/rating/:id
curl -X GET 'http://hristovtintdetailng.com/rating/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "email": "jane@example.com",
  "text": "Text shown on the site.",
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "stars": 1,
  "product": "6543210fedcba98765432100",
  "service": "6543210fedcba98765432100",
  "program": "6543210fedcba98765432100",
  "price_plan": "6543210fedcba98765432100",
  "name": "Example",
  "miniapp": "6543210fedcba98765432100",
  "staff_member": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve the ratings table

Ratings of one kind of item (?type), with the items. Newest first.

User token

Needs the token of a signed-in user.

Query parameters
charAtstring

Only ratings tables with this char at.

slicestring

Only ratings tables with this slice.

typestring

Only ratings tables with this type.

Status codes

200 400 401 500

GET/ratings-table
curl -X GET 'http://hristovtintdetailng.com/ratings-table?ionic=true&charAt=...&slice=...&type=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "make": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a user rating

The rating page from a rating email. A wrong code goes to the not-found page.

Public

Public - no token needed.

Path parameters
emailstringRequired

An email address.

validation_codestringRequired

The user rating's validation code.

typestringRequired

The user rating's type.

idstringRequired

The ID of the user rating.

Status codes

200 400 500

GET/user-rating/:email&:validation_code&:type&:id
curl -X GET 'http://hristovtintdetailng.com/user-rating/{email}&{validation_code}&{type}&{id}?ionic=true'
Response
{
  "organization_name": "Example",
  "firstname": "Example",
  "lastname": "Example",
  "email": "jane@example.com",
  "phone_number": "+359 888 123 456",
  "address": "example",
  "city": "example",
  "state": "example",
  "country": "example",
  "zip_code": "example",
  "tax_identification_number": "example",
  "notes": "Text shown on the site.",
  "products": [
    "example"
  ],
  "products_obj": [
    {
      "product_id": "6543210fedcba98765432100",
      "name": "Example",
      "options": "example",
      "price": 49.9,
      "quantity": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "programs": [
    "example"
  ],
  "programs_obj": [
    {
      "program_id": "6543210fedcba98765432100",
      "title": "Example",
      "price": 49.9,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "tickets": [
    "6543210fedcba98765432101"
  ],
  "donations": [
    "6543210fedcba98765432101"
  ],
  "donations_obj": [
    {
      "donation_id": "6543210fedcba98765432100",
      "name": "Example",
      "options": "example",
      "price": 49.9,
      "quantity": 1,
      "_id": "6543210fedcba98765432100"
    }
  ],
  "value": 49.9,
  "finalized": false,
  "fulfilled": false,
  "paid": false,
  "delivery_method": "example"
}
↑↓ Navigate↵ GoEsc Close