AI92 በቀጥታ ስርጭት ላይ ነው - ዓለም አቀፍ ለስላሳ ማስጀመሪያችን ተጀምሯል፡ ሙሉው መድረክ ለመጀመሪያዎቹ 30 ቀናት በዓለም ዙሪያ ክፍት ነው።
የሰነድ ምናሌ

እነዚህ የገንቢ ሰነዶች በአሁኑ ጊዜ በእንግሊዝኛ ብቻ ናቸው። ኮድ እና ኤፒአይ ባህሪ በሁሉም ክልሎች ተመሳሳይ ናቸው።

Reviews & GBP API

Two surfaces backed by module-BDE-M:

  • Reviews (/v1/reviews/*) — list a brand's reviews and public testimonials (free), generate AI replies, send review requests, and read reputation analytics (free).
  • Google Business Profile (/v1/gbp/*) — list locations and posts (free), preview a post (free), and publish a post with media (metered "GBP Posting" product).

Authentication

Authorization: Bearer ai92_live_<key>     # production
Authorization: Bearer ai92_test_<key>     # sandbox

Mutating requests support Idempotency-Key and are brand-gated (platform_brand_id / brand_id is verified against the account).

Credit costs at a glance

EndpointCost
GET /v1/reviewsFree
GET /v1/reviews/testimonialsFree
POST /v1/reviews/reply1 cr
POST /v1/reviews/request2 cr
GET /v1/reviews/analyticsFree
GET /v1/gbp/locationsFree
GET /v1/gbp/postsFree
POST /v1/gbp/posts/previewFree
POST /v1/gbp/posts/publish-with-media50 cr
GET /v1/gbp/connectionFree

Reviews

GET /v1/reviews

Cost: Free

List a brand's reviews via module-BDE-M.

Auth: Bearer

ParameterInTypeRequiredDescription
platform_brand_idquerystringYesThe brand. Verified against the account.
limitqueryintegerNoPage size. Default 50.
offsetqueryintegerNoPage offset. Default 0.

Request

bash
curl "https://api.ai92.ai/v1/reviews?platform_brand_id=acme&limit=20" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "reviews": [
    { "review_id": "rev_01", "rating": 5, "text": "Great product!", "author": "Sam", "replied": false }
  ],
  "total": 318
}

GET /v1/reviews/testimonials

Cost: Free

Public testimonials feed.

Auth: Bearer

_No parameters._

Request

bash
curl https://api.ai92.ai/v1/reviews/testimonials \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "testimonials": [ { "id": "t_1", "quote": "Transformed our outreach.", "author": "Acme Corp" } ]
}

POST /v1/reviews/reply

Cost: 1 credit

Generate and post an AI reply to a review.

Auth: Bearer

FieldTypeRequiredDescription
review_idstringYesThe review to reply to.
reply_textstringYesThe reply content.

Request

bash
curl https://api.ai92.ai/v1/reviews/reply \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"review_id": "rev_01", "reply_text": "Thanks so much, Sam — glad it is working for you!"}'

Response 200 OK

json
{ "review_id": "rev_01", "reply_id": "rpl_44", "status": "posted" }

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 1 credit.

POST /v1/reviews/request

Cost: 2 credits

Send a review request to a customer for a location.

Auth: Bearer

FieldTypeRequiredDescription
location_idstringYesThe GBP location id.
customer_emailstringYesCustomer email to request a review from.

Request

bash
curl https://api.ai92.ai/v1/reviews/request \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"location_id": "loc_7", "customer_email": "[email protected]"}'

Response 200 OK

json
{ "request_id": "rq_88", "status": "sent" }

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 2 credits.

GET /v1/reviews/analytics

Cost: Free

Reputation pulse for a brand: rating distribution, 30-day trend, low-rating and unreplied counts, and a 0–100 score.

Auth: Bearer

ParameterInTypeRequiredDescription
platform_brand_idquerystringYesThe brand. Verified against the account.

Request

bash
curl "https://api.ai92.ai/v1/reviews/analytics?platform_brand_id=acme" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "platform_brand_id": "acme",
  "reputation_score": 82,
  "avg_rating": 4.6,
  "distribution": { "5": 210, "4": 70, "3": 20, "2": 10, "1": 8 },
  "unreplied_count": 14,
  "low_rating_count": 18,
  "trend_30d": 0.05
}

Google Business Profile (GBP)

GET /v1/gbp/locations

Cost: Free

List the brand's connected Google Business locations.

Auth: Bearer

ParameterInTypeRequiredDescription
platform_brand_idquerystringYesThe brand. Verified against the account.

Request

bash
curl "https://api.ai92.ai/v1/gbp/locations?platform_brand_id=acme" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "locations": [ { "location_id": "loc_7", "name": "Acme HQ", "address": "1 Market St, SF" } ]
}

GET /v1/gbp/posts

Cost: Free

List the brand's GBP posts, optionally filtered by location and status.

Auth: Bearer

ParameterInTypeRequiredDescription
platform_brand_idquerystringYesThe brand. Verified against the account.
location_idquerystring / nullNoFilter by location.
statusquerystring / nullNoFilter by post status.

Request

bash
curl "https://api.ai92.ai/v1/gbp/posts?platform_brand_id=acme&location_id=loc_7" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "posts": [ { "post_id": "gp_3", "summary": "Spring sale now on", "status": "published" } ]
}

POST /v1/gbp/posts/preview

Cost: Free

Render a preview of a GBP post without publishing. The body is permissive (extra fields are forwarded to module-BDE-M), but platform_brand_id is required for ownership verification.

Requires an active GBP OAuth connection. For any brand that has not completed the Google Business Profile OAuth flow, preview returns 409 GBP_NOT_CONNECTED. There is no simulated GBP connection in the sandbox, so preview is not testable on a sandbox brand — connect a real GBP property (via POST /v1/gbp/connect) first. The only GBP write that is fully simulatable in sandbox without a real connection is POST /v1/gbp/posts/publish-with-media, which returns { "status": "published", "sandbox": true }.

Auth: Bearer

FieldTypeRequiredDescription
platform_brand_idstringYesThe brand. Verified against the account.
location_idstring / nullNoTarget location.
summarystring / nullNoPost copy.
_(additional fields)_anyNoForwarded to the backend (which validates).

Request

bash
curl https://api.ai92.ai/v1/gbp/posts/preview \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"platform_brand_id": "acme", "location_id": "loc_7", "summary": "Spring sale now on"}'

Response 200 OK

json
{ "preview": { "summary": "Spring sale now on", "media": null }, "valid": true }

POST /v1/gbp/posts/publish-with-media

Cost: 50 credits

Publish a GBP post with media (the "GBP Posting" catalog product). Charged on success; a backend failure returns 4xx/503 and nothing is charged.

Auth: Bearer

FieldTypeRequiredDescription
platform_brand_idstringYesThe brand. Verified against the account.
location_idstring / nullNoTarget location.
summarystring / nullNoPost copy.
_(additional fields, e.g. media URL)_anyNoForwarded to the backend (which validates).

Request

bash
curl https://api.ai92.ai/v1/gbp/posts/publish-with-media \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"platform_brand_id": "acme", "location_id": "loc_7", "summary": "Spring sale now on", "media_url": "https://cdn.ai92.ai/ast_99.png"}'

Response 200 OK

json
{ "post_id": "gp_4", "status": "published", "url": "https://business.google.com/posts/gp_4" }

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 50 credits.
503(backend error)module-BDE-M failed; nothing charged.

GET /v1/gbp/connection

Cost: Free

Whether the brand has a connected Google Business profile, plus its account/location.

Auth: Bearer

ParameterInTypeRequiredDescription
brand_idquerystringYesThe brand. Verified against the account.

Request

bash
curl "https://api.ai92.ai/v1/gbp/connection?brand_id=acme" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{ "brand_id": "acme", "connected": true, "google_account": "acme@business", "location_count": 3 }