Skip to content
Contents

Actions

Two endpoints spend something outside this system — an outbound request to somebody else's server, and a call to Ahrefs. Both are gated by actions:trigger rather than by listings:write, so a key that syncs listings cannot drain either budget.

Check a linkback now

POST /api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/linkback_check

actions:trigger The capability a key must carry to call this.

Check this listing's linkback now, ahead of its schedule. The check runs in the background and the reply says it was queued.

Runs the check ahead of the directory's schedule. The work happens in the background, so the reply says it was queued and carries the verification status as it stands — not the result, which does not exist yet.

curl

curl -X POST \ -H "Authorization: Bearer YOUR_KEY" \ "https://directories.prosvita.io/api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/linkback_check"

Ruby

require "net/http" require "json" uri = URI("https://directories.prosvita.io/api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/linkback_check") request = Net::HTTP::Post.new(uri) request["Authorization"] = "Bearer YOUR_KEY" response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(request) end puts JSON.parse(response.body)

Response

{ "data": { "status": "queued", "public_id": "9834hd7", "verification_status": "verified" } }

Refresh a Domain Rating now

POST /api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/domain_rating_refresh

actions:trigger The capability a key must carry to call this.

Fetch this listing's host Domain Rating now. The reply carries the rating we already hold, so an impatient caller still sees the last good answer.

Fetches the listing's host rating from Ahrefs. The rating we already hold travels with the acceptance, so an impatient caller still sees the last good answer, and fetched_at tells "never asked" from "asked, and Ahrefs indexes nothing here".

curl

curl -X POST \ -H "Authorization: Bearer YOUR_KEY" \ "https://directories.prosvita.io/api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/domain_rating_refresh"

Ruby

require "net/http" require "json" uri = URI("https://directories.prosvita.io/api/v1/directories/DIRECTORY_ID/listings/LISTING_ID/domain_rating_refresh") request = Net::HTTP::Post.new(uri) request["Authorization"] = "Bearer YOUR_KEY" response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(request) end puts JSON.parse(response.body)

Response

{ "data": { "status": "queued", "public_id": "9834hd7", "host": "mycoolcafe.example", "rating": 34.5, "fetched_at": "2026-08-20T06:11:44Z" } }

Cooldowns

Both endpoints are on a cooldown, and both answer 429 with the moment you may ask again rather than pretending to work. The console says exactly this to an operator, and a script deserves the same answer.

{ "error": "throttled", "retry_at": "2026-08-29T14:05:00Z" }
  • 202 — The work was queued. It happens in the background, so the reply describes what was asked for rather than what it found.
  • 429 throttled — The same action was asked for again too soon. retry_at names the moment you can ask again.
  • 503 unavailable — A Domain Rating fetch could not be asked for at all — the listing has no host, or our own credential is paused. Neither is fixed by sending the same request a second later.