Skip to main content

aivisibilityskill

The official Python client for the aivisibilityskill API. Ask ChatGPT, Gemini, Google AI Overviews and AI Mode, Perplexity, Claude and Grok about any brand, in any country, and get back what they said, who they cited and what to fix.

  • Safe retries: every check carries an idempotency key, so a retry is never charged twice.
  • Webhook signature verification included.
  • One dependency (httpx). Python 3.9+. Typed (py.typed).
pip install aivisibilityskill

Quick start

import os
from aivisibilityskill import Aiv

aiv = Aiv(api_key=os.environ["AIV_KEY"])  # aiv_live_... or aiv_test_... (free sample data)

job = aiv.checks.create(
    ["best invoicing app for freelancers"],
    engines=["chatgpt", "gemini", "ai_overview", "perplexity"],
    locale="en-US",
)
done = aiv.jobs.wait(job["id"])
for answer in done["answers"]:
    print(answer["engine"], [b["name"] for b in answer["brands"]])

Get a key at app.aivisibilityskill.com. Test keys (aiv_test_...) are free and return sample answers, so you can build without spending credits.

Building for your own customers

aiv.checks.create(questions, customer="cus_8421", metadata={"workspace": "acme"})

key = aiv.keys.create("acme", customer="cus_8421", allowed_ips=["203.0.113.0/24"])

csv_text = aiv.usage.csv(from_="2026-11-01", to="2026-11-30", group_by="customer")

# Everything stored for a customer, deleted (runs in the background):
deletion = aiv.customers.delete_data("cus_8421")
aiv.data_deletions.wait(deletion["id"])

Thousands of answers at once

batch = aiv.batches.create(
    two_thousand_questions,
    engines=["chatgpt", "ai_overviews"],
    mode="batch",        # cheapest
    max_age_hours=24,    # reuse answers from the last day at half price
)
done = aiv.batches.wait(batch["id"])  # or listen for the batch.completed webhook
for job_id in done["checks"]:
    job = aiv.jobs.get(job_id)

Webhooks

from aivisibilityskill import verify_webhook, WebhookVerificationError

# Flask: request.get_data(), Django: request.body, FastAPI: await request.body()
try:
    event = verify_webhook(raw_body, request.headers, os.environ["AIV_WEBHOOK_SECRET"])
except WebhookVerificationError:
    return "", 400
if event["type"] == "check.completed":
    job = aiv.jobs.get(event["data"]["id"])

During a secret rotation, pass both secrets: verify_webhook(body, headers, [new_secret, old_secret]). Deliveries older than 5 minutes are refused as replays.

Lists

Lists are paged. iterate() follows the pages for you:

for job in aiv.jobs.iterate(customer="cus_8421"): ...
for event in aiv.events.iterate(type="check.failed"): ...
for entry in aiv.audit_log.iterate(): ...

Errors

Every failure raises AivError with the HTTP status, a stable code (insufficient_credits, budget_exceeded, rate_limited, ...), a readable detail and the request_id to quote to support.

from aivisibilityskill import AivError
try:
    aiv.checks.create(questions)
except AivError as err:
    if err.code == "insufficient_credits": ...

GET requests and checks are retried on 429, 502, 503, 504 and network errors (twice by default, honouring Retry-After). Set max_retries and timeout in the constructor, or pass your own httpx.Client. Use it as a context manager (with Aiv(...) as aiv:) to close connections when done.

Everything else

aiv.projects (tracking, schedules, visibility, competitors, sources, facts, history, site checks, research), aiv.opportunities and aiv.fixes (what to fix and proof it worked), aiv.actions, aiv.webhooks, aiv.events, aiv.keys, aiv.account, aiv.locales, aiv.pricing() and aiv.estimate(). Responses are the API's JSON as dicts. For anything not wrapped yet: aiv.request("GET", "/v1/...").

API reference: api.aivisibilityskill.com/docs. Support: support@aivisibilityskill.com.

MIT licensed.

Metadata

Release files for aivisibilityskill 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aivisibilityskill 1.0.0
File Size Uploaded Provenance Actions
aivisibilityskill-1.0.0.tar.gz 12.9 kB Without provenance Details for aivisibilityskill-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aivisibilityskill 1.0.0
File Interpreter ABI Platform Actions
aivisibilityskill-1.0.0-py3-none-any.whl Python 3 none any Details for aivisibilityskill-1.0.0-py3-none-any.whl

Total release size: 24.9 kB

Release files / aivisibilityskill-1.0.0.tar.gz

Download URL aivisibilityskill-1.0.0.tar.gz
Size 12.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0ca90177cc438cb8c6679fef08eef62cd26f444110e3608693fed87bc2eed5cf
BLAKE2b-256 checksum
How to use checksums
1fbe4a2cfe72429f24f85efa001a62029731cb0d5742ff35431de74e9834a825
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / aivisibilityskill-1.0.0-py3-none-any.whl

Download URL aivisibilityskill-1.0.0-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
afe993d5f44175849d2257ee025c96c17e2dd69edca433e4ebada4ee457cbdbc
BLAKE2b-256 checksum
How to use checksums
c0a603cabeba9724916b87ec78ecb09ed39dd25cf4dd2d3f87783c4e30848fca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Security for aivisibilityskill 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page