Advizor AI API
Documentation

Welcome to the Advizor AI API documentation! This API is currently in development but already offers an extensive range of features that go beyond our CLI tool. By leveraging Advizor AI’s RESTful approach, you can integrate powerful crypto trading and portfolio analytics functionality directly into your applications—with predictable resource-oriented URLs and JSON-encoded responses.

NOTE: Documentation is constantly being updated and new features are coming soon.

Getting Started

Base URL:
All requests to the Advizor AI API will be made to a base URL (e.g.,https://api.advizor.ai).
Note: During development, you might receive a sandbox or staging URL instead (e.g., https://sandbox.api.advizor.ai).

Authentication:
To make calls to Advizor AI, you must include your API key in your requests. Currently, the API supports both test mode and live mode keys. Use test mode keys to safely experiment without affecting real wallets or transactions.

Request & Response Formats:Request Body:
Form-encoded (or JSON-based) parameters accepted at each endpoint.
Response: JSON-encoded data, detailing success or error codes.

Status Codes: Standard HTTP response codes to reflect the outcome (e.g., 200 OK, 400 Bad Request, 401 Unauthorized, etc.).

POST
curl https://api.advizor.ai/v1/orders/or_1Ce6vg2eAdvA1 \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "metadata[order_id]=6735"
POST
/v1/ava/endpoint/ids
var stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
stripe.creditNotes.retrieve(
  'cn_1FWuAc2eZvKYlo2C1Kbk7sKK',
  function(err, creditNote) {
    // asynchronously called
  }
);
POST
/v1/ava/endpoint/ids

// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
  fmt.Println("Hello, 世界")
}
POST
/v1/ava/endpoint/ids

# Python 3: Fibonacci series up to n
>>> def fib(n):
>>>     a, b = 0, 1
>>>     while a < n:
>>>         print(a, end=' ')
>>>         a, b = b, a+b
>>>     print()
>>> fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
RESPONSE
{
 {
  "id": "or_1Ce6vg2eAdvA1",
  "object": "order",
  "amount": 1500,
  "amount_returned": 1500,
  "application": null,
  "application_fee": null,
  "charge": "ch_1Ce6vm2eAdvB1",
  "created": 1675458752,
  "currency": "usd",
  "customer": null,
  "email": "jenny.rosen@example.com",
  "items": [
    {
      "type": "adv_test",
      "parent": "adv_G3qQngkSaByvzT"
    }
  ],
  "livemode": false,
  "metadata": {
    "order_id": "6735"
  }
}

Authentication

The Advizor AI API authenticates requests using API keys. You can manage these keys within your Advizor AI Dashboard, where you can generate both test and live keys.

Test Keys usually have a prefix like adv_test_....
Live Keys
typically have a prefix like adv_live_....
Scoped/Restricted Keys (coming soon) will allow more granular permissions, such as read-only or single-portfolio access.

Your API keys provide extensive privileges in our system, so store them securely. Do not commit them to public GitHub repositories, client-side code, or anywhere they can be easily exposed.

By default, the Advizor AI API supports Basic Auth over HTTPS. Simply pass your secret API key as the username, leaving the password field empty.

Base URL: https://api.advizor.ai
Endpoint
: /v1/portfolios/pf_2AbCd3xyTest (in this example, retrieving a specific portfolio)
API Key: adv_test_7eC39HqLyjWDarjtT1zdp7dc is provided after -u.
No Password needed—just leave it blank.

Important: All requests must be made over HTTPS. Any non-HTTPS (plain HTTP) requests will be rejected for security reasons.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Explanation:

id: The unique identifier for the portfolio (pf_2AbCd3xyTest).
total_value_usd: Estimated total value across all tokens in USD.
tokens: An array of token balances with real-time USD estimates.
metadata: Arbitrary key-value pairs you can attach for internal tracking.created: A Unix timestamp representing portfolio creation time.
livemode: Indicates whether this portfolio is in live or test mode.

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
/v1/ava/endpoint/ids
var stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
stripe.creditNotes.retrieve(
  'cn_1FWuAc2eZvKYlo2C1Kbk7sKK',
  function(err, creditNote) {
    // asynchronously called
  }
);
POST
/v1/ava/endpoint/ids

// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
  fmt.Println("Hello, 世界")
}
POST
/v1/ava/endpoint/ids

# Python 3: Fibonacci series up to n
>>> def fib(n):
>>>     a, b = 0, 1
>>>     while a < n:
>>>         print(a, end=' ')
>>>         a, b = b, a+b
>>>     print()
>>> fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
POST
curl https://api.advizor.ai/v1/portfolios/pf_2AbCd3xyTest \ -H "Authorization: Bearer adv_test_7eC39HqLyjWDarjtT1zdp7dc"
RESPONSE
{
  {
  "id": "pf_2AbCd3xyTest",
  "object": "portfolio",
  "total_value_usd": 12500,
  "tokens": [
    {
      "symbol": "PEPE",
      "balance": 1200000,
      "estimated_usd_value": 6000
    },
    {
      "symbol": "DOGE",
      "balance": 10000,
      "estimated_usd_value": 700
    },
    {
      "symbol": "USDC",
      "balance": 2000,
      "estimated_usd_value": 2000
    }
  ],
  "metadata": {
    "owner_id": "user_ABC123",
    "region": "NA"
  },
  "created": 1689915372,
  "livemode": false
}

Pagination

Many Advizor AI endpoints that return collections (e.g., lists of trades, credit notes, or portfolio transactions) support pagination.

You can usually paginate by passing parameters such as:
limit: The number of objects to return per page.
starting_after or ending_before: Cursors for pagination, referencing the ID of an object.

Test mode secret keys usually have a prefix like adv_test_....

Live mode secret keys often have a prefix like adv_live_....

Scoped/Restricted API keys (coming soon) will allow more granular permissions, such as read-only or single-portfolio access.

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

Responses typically include fields like:

has_more: Boolean indicating if more data is available.
data: An array of the returned objects.

Attributes
  • type string

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.

  • doc_url required

    A link to related documentation or resource.

  • charge string

    For transaction-related resources, this could represent the ID of a processed or failed on-chain payment.

  • code string

    For errors handled programmatically, a short string indicating the issue (e.g., invalid_request_error, insufficient_funds

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl "https://api.advizor.ai/v1/trades?limit=10&starting_after=trade_1234" \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc:

Request ID's

Each Advizor AI API request has an associated request identifier. You’ll find this value in the response headers under a field such as Request-Id. You can also see it in the Advizor AI Dashboard when you review individual request logs.If you ever need assistance with a specific request, including the request identifier allows our support team to pinpoint the issue quickly, providing you with the fastest possible resolution.

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl https://api.advizor.ai/v1/credit_notes/cn_1FWqvi2eAdvLO2CZd3TwT6n \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "metadata[order_id]=6735"

Authentication

Test mode secret keys often have a prefix like adv_test_…, while live mode keys typically have a prefix like adv_live_…. In the future, you’ll be able to use restricted (or scoped) keys for granular permissions—such as read-only portfolio access, or limiting certain endpoints.

Security Reminder: All API requests must be made over HTTPS. Calls made over plain HTTP will fail, and unauthenticated requests will also be rejected.

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl https://api.advizor.ai/v1/credit_notes/cn_1FWqvi2eAdvLO2CZd3TwT6n \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "metadata[order_id]=6735"

post responses

When submitting POST requests to Advizor AI endpoints, you can expect structured JSON responses that reflect the status and outcome of your operation—whether it’s creating a record, updating metadata, or initiating a new trade.Test mode secret keys typically start with a prefix like adv_test_…, while live mode keys may have a prefix such as adv_live_…. In the future, you’ll be able to use restricted keys for more granular permissions (e.g., read-only access or limiting certain wallet operations).

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Endpoint: /v1/credit_notes/cn_1FWqvi2eAdvLO2CZd3TwT6n (a hypothetical credit note)
API Key: adv_test_4eC39HqLyjWDarjtT1zdp7dc (example test key)
Metadata: We’re attaching a custom order_id for tracking or business logic.

Explanation
id: Unique resource identifier (cn_1FWqvi2eAdvLO2CZd3TwT6n)
object: Resource type (credit_note)
created
: Unix timestamp of the POST operation
metadata: Contains any custom fields added during the request
status: Indicates success or the new state of the resource
livemode: False indicates this request was made in test mode

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl https://api.advizor.ai/v1/credit_notes/cn_1FWqvi2eAdvLO2CZd3TwT6n \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "metadata[order_id]=6735"

GET responses

When you retrieve resources via GET requests to the Advizor AI endpoints, the API responds with structured JSON data summarizing the requested resource. Whether you’re fetching details about a credit note, portfolio, or trade, you can expect a well-defined schema for easy integration.Test mode secret keys typically begin with adv_test_…. In the future, you’ll also be able to use restricted or scoped keys to limit access to certain endpoints or resources.

Explanation of Fields

id: Unique identifier (cn_1FWqvi2eAdvLO2CZd3TwT6n)
object: Identifies the resource type (credit_note)
created: Unix timestamp indicating when the resource was created
amount: Numeric value reflecting the credit note’s total in the specified currency
currency: Currency code (e.g., usd, eur, etc.)
metadata: A JSON object of key-value pairs you can use for tracking (e.g., invoice_id)
status: Current state (e.g., draft, issued, refunded)
livemode: Indicates if the resource is in live mode (true) or test mode (false)

POST
curl https://api.advizor.ai/v1/credit_notes/cn_1FWqvi2eAdvLO2CZd3TwT6n \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc:
POST
/v1/ava/endpoint/ids
var stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
stripe.creditNotes.retrieve(
  'cn_1FWuAc2eZvKYlo2C1Kbk7sKK',
  function(err, creditNote) {
    // asynchronously called
  }
);

Test Modules (In Development)

Whale Movement

Whale Movement Tracker (WMT)One of the more exciting offerings in the Advizor AI ecosystem is the Whale Movement Tracker.
This feature monitors large on-chain transactions from “whale” wallets—high-value addresses that can significantly influence token prices.

Overview
Endpoint:

POST /v1/whale_tracker/alerts

Purpose
:
Allows you to create or update custom alerts for specific whale addresses or transaction thresholds. You’ll be notified whenever whales move tokens that meet the criteria you define.
Use Cases:
- Price Influence Prediction: If a known whale unloads a large portion of tokens, it might drive the market price down.
- Front-Running or Arbitrage: Quickly detect major purchases and evaluate short-term trading opportunities.
- Portfolio Risk Management: Hedge or rebalance if whales move tokens in large volumes from or into your holdings.

Parameters
  • address string

    The whale wallet address you want to track (in this example: 0xAbCd1234567890abcdef1234567890ABCDEF1234).

  • token

    The token symbol you wish to monitor for large movements (PEPE, DOGE, etc.).

  • threshold string

    The minimum token amount (in whole tokens, not Wei or Satoshis) that triggers an alert when a transfer is detected.

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl https://api.advizor.ai/v1/whale_tracker/alerts \ -u adv_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "address=0xAbCd1234567890abcdef1234567890ABCDEF1234" \ -d "token=PEPE" \ -d "threshold=100000" \ -d "notification_url=https://myserver.com/webhooks/whale_alert"

Arbitrage Sniper (AS)

One of the most thrilling modules in Advizor AI is the Arbitrage Sniper. This functionality scans multiple trading venues (DEX/CEX) in real time to spot price discrepancies, allowing you to buy low on one exchange and sell high on another—capitalizing on quick trades.

Overview

Endpoint:
POST /v1/arbitrage/sniper


Purpose:
Enables you to create or update specific arbitrage scanning rules. You’ll be alerted when certain price thresholds or profit margins are detected across different exchanges.Use

Opportunism:
Identify if token $PEPE trades for 5%+ cheaper on Dex A compared to Dex B.Multi-CEX

Monitoring:
Watch for spread opportunities for high-volume tokens between different CEXes.

Execution:
(Coming soon) Potentially tie into auto-trade bots to instantly execute if a profitable discrepancy is found.

Parameters
  • token string

    The symbol of the token you want to track (MONG, DOGE, SHIB, etc.).

  • exchange_a

    Name (or ID) of the first exchange to compare (e.g., Uniswap, SushiSwap, Binance, KuCoin).

  • exchange_b

    Name (or ID) of the second exchange to compare (e.g., Uniswap, SushiSwap, Binance, KuCoin).

  • threshold int

    The minimum percentage difference (e.g., 5 means if price difference is 5% or more, trigger an alert).

POST
/v1/ava/endpoint/ids
curl https://api.stripe.com/v1/credit_notes/cn_1FWqvi2eZvKYlo2CZd3TwT6n \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "metadata[order_id]=6735"
POST
curl https://api.advizor.ai/v1/arbitrage/sniper \ -u adv_test_7yH90qPLMtRDarjtT1zdp7dc: \ -d "token=MONG" \ -d "exchangeA=Uniswap" \ -d "exchangeB=Binance" \ -d "threshold=5" \ -d "notification_url=https://myserver.com/webhooks/arbitrage"