> ## Documentation Index
> Fetch the complete documentation index at: https://docs.webacy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get risk analysis of a URL

> Analyze a URL for phishing, malware, and other security threats



## OpenAPI

````yaml POST /url
openapi: 3.0.1
info:
  title: Risk Score API
  description: API definition for Webacy Risk Scores
  version: 1.9.1
servers:
  - url: https://api.webacy.com
    description: Webacy Risk Score API (Production)
  - url: https://api-development.webacy.com
    description: Webacy Risk Score API (Development)
  - url: http://0.0.0.0:3030/api/v1/risk-score
    description: Webacy Risk Score API - Local
security:
  - api_key: []
tags:
  - name: Webhooks
    description: >-
      Subscribe to and manage real-time event notifications (currently
      DEPEG_TIER_CHANGE)
  - name: Threat Risks
    description: Analyze addresses for security threats and malicious activity
  - name: Sanction Checks
    description: Check addresses against OFAC and other sanction lists
  - name: Approval Risks
    description: Analyze token approvals and associated risks
  - name: Transaction Risks
    description: Assess risk details for blockchain transactions
  - name: Exposure Risk
    description: Understand risk profile and exposure of addresses
  - name: Contract Risk
    description: Real-time smart contract security analysis
  - name: URL Risks
    description: Analyze URLs for phishing and security threats
  - name: API Usage
    description: Monitor and manage API consumption
  - name: Holder Analysis
    description: Token holder distribution and sniper detection
  - name: Address Poisoning
    description: Detect address poisoning attack patterns
  - name: Token Analysis
    description: Comprehensive token security and market analysis
  - name: Pool Analysis
    description: Liquidity pool data and analysis
  - name: Transaction Scanning
    description: Scan and simulate transactions for risks
  - name: trading-lite
    description: Lightweight trading risk assessment
  - name: RWA & Pegged Tokens
    description: >-
      Real-world asset and pegged-token analytics (supply flows, mint/burn
      velocity)
  - name: Vault Risk v3
    description: >-
      Webacy-native v3 vault risk surface — composite grade, categories,
      coverage, and the framework taxonomy.
  - name: RWA Risk v3
    description: >-
      Webacy-native v3 RWA / stablecoin risk surface — composite grade,
      structural-health criteria, and batch scoring.
  - name: Stablecoins v3
    description: >-
      Stablecoin-only aliases of the v3 RWA routes: same grades, same shapes,
      `segment` fixed to `stablecoin`.
paths:
  /url:
    post:
      tags:
        - URL Risks
      summary: Project URL Risk Analysis
      description: Analyze a URL for phishing, malware, and other security threats
      operationId: analyzeUrl
      requestBody:
        description: >-
          A JSON object containing a single URL string to be analyzed for
          potential risks.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/urlRequest'
      responses:
        '200':
          headers:
            x-credit-token:
              $ref: '#/components/headers/XCreditToken'
            x-credit-balance-cu:
              $ref: '#/components/headers/XCreditBalanceCu'
          description: >-
            Success - Returns an assessment of the URL's safety score, including
            blacklist and maliciousness checks.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/urlResponse'
        '400':
          description: >-
            Bad Request - `url` is missing, not a string, or not a parseable URL
            or domain (e.g. `http://exa mple.com`, an IP address, `localhost`).
        '401':
          $ref: '#/components/responses/UnauthorizedError'
          description: Unauthorized - Invalid API key or missing authentication.
        '402':
          $ref: '#/components/responses/X402PaymentRequired'
        '503':
          $ref: '#/components/responses/X402ServiceUnavailable'
      security:
        - api_key: []
components:
  schemas:
    urlRequest:
      type: object
      required:
        - url
      properties:
        url:
          type: string
          description: >-
            The URL or domain to check, with or without a scheme, path or query
            (e.g. `uniswap.org` or `https://app.uniswap.org/swap`). The verdict
            is for its host; `www.` and any port are ignored.
          example: https://app.uniswap.org/swap
    urlResponse:
      type: object
      required:
        - riskLevel
        - description
        - message
      properties:
        riskLevel:
          type: string
          enum:
            - low
            - medium
            - high
            - unknown
          description: >-
            `high`: a known phishing or blocklisted site, from Webacy's database
            or a real-time phishing feed. A subdomain takes its registered
            domain's verdict when it has none of its own (`login.<phishing
            domain>` is `high`, `app.aave.com` is `low`). `medium`: not listed,
            but similar to a known project's domain, a possible impersonation.
            `low`: a known project's site. `unknown`: no verdict, including
            pages on shared hosting such as `sites.google.com/view/…`, where the
            platform's reputation says nothing about the page.
        description:
          type: string
          description: Human-readable explanation of the verdict.
        message:
          type: string
          description: Where to report a wrong verdict.
      example:
        riskLevel: low
        description: This URL is known as a safe project address.
        message: 'Wrong response? Please report: https://forms.gle/4ievDbQDqRgrHcRV9'
  headers:
    XCreditToken:
      description: >-
        Opaque bearer token for a prepaid x402 CU balance. Send it as
        `x-credit-token` to spend that balance. If the balance is insufficient
        and a payment for its verified payer settles, the same token is topped
        up and returned; otherwise the paid call returns a new independent
        token.
      schema:
        type: string
    XCreditBalanceCu:
      description: CU remaining for the returned or presented credit token after this call.
      schema:
        type: integer
        minimum: 0
        example: 480
  responses:
    UnauthorizedError:
      description: Authorization information is missing or invalid
      content:
        application/json:
          example:
            message: Unauthorized
    X402PaymentRequired:
      description: >-
        Keyless x402 payment required. Returned for a keyless caller (gateway
        entry `x-webacy-entry: x402`) with no prepaid CU balance or insufficient
        CU on the presented credit token. Identified by the base64
        `PAYMENT-REQUIRED` response header; the body carries the x402 challenge
        (a USDC price on Base and a Stripe-minted deposit address). Pay it, then
        retry with the `PAYMENT-SIGNATURE` header to unlock the resource and
        receive a credit token. An authenticated api-key caller with a
        past_due/unpaid subscription may instead receive a different 402
        (`Subscription payment required`, plain JSON, no `PAYMENT-REQUIRED`
        header).
      headers:
        PAYMENT-REQUIRED:
          description: >-
            Base64-encoded x402 challenge (network, asset, amount, payTo,
            resource.url). The edge rollout supplies the canonical public
            request path through a valid gateway claim; missing or invalid
            claims safely fall back to the public origin plus an internal path
            identifier. resource.url is not yet suitable for publishing to a
            public x402 discovery catalog (Coinbase's Bazaar): route-specific
            declarations and live paid validation are still pending.
          schema:
            type: string
      content:
        application/json:
          example:
            x402Version: 1
            error: payment required
    X402ServiceUnavailable:
      description: >-
        x402 paywall fails CLOSED: if payment configuration is incomplete or
        invalid, the x402 route unexpectedly has no payment requirement, or the
        facilitator, credit store, or settlement is unavailable, a gated keyless
        request returns 503 (`Payment service temporarily unavailable`) rather
        than serving the resource unpaid.
      content:
        application/json:
          example:
            message: Payment service temporarily unavailable
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.