SEO Agentic Approval API Guide

Anything that spends credits waits for an approval, and this endpoint is how an agent collects that approval itself instead of waiting for a person. It is one GET request, it returns the codes for everything currently pending, and each code lasts four days.

What This Endpoint Is For

Your agent queues a crawl or a competitor research order through the private MCP and the order sits at pending approval. Without this API, somebody opens the dashboard and clicks approve.

With it, the loop closes in software. The MCP queues the operation, this endpoint hands back the approval code, the MCP approval_code tool submits that code, and the operation runs.

Before Your First Call

Two things live in the Agent Configuration card on your settings page. Generate an agent key there, then list the IP addresses your agent calls from, one per line. CIDR ranges work, so 198.51.100.0/24 covers a subnet.

The agent key is a bearer token with no second factor behind it, so treat it the way you would treat a password. Anything holding that key and calling from an allowed address can read every pending approval in your agency.

The Request

GET https://seolinkmap.com/api/agentic-approvals, with your agent key in the Authorization header as Authorization: Bearer {your_agent_key}. No parameters, no body.

What Comes Back

A success returns every operation that is pending approval, still has an unexpired code, and belongs to the agency that key resolves to. Each entry carries the project, the operation, the estimated credit cost, the code, and the moment that code dies.

Success Response (200):

{
  "success": true,
  "agency_id": 123,
  "pending_approvals": [
    {
      "id": 456,
      "project": {
        "id": 789,
        "name": "Example Website",
        "domain": "example.com"
      },
      "operation": {
        "type": "crawl",
        "subtype": "full_site",
        "description": "Full site crawl and analysis"
      },
      "cost": {
        "estimated_credits": 250
      },
      "approval": {
        "code": "ABC123DEF",
        "expires_at": "2025-09-15 14:30:00"
      },
      "request_details": {
        "notes": "Updated crawl requested for site changes"
      },
      "created_at": "2025-09-14 12:00:00"
    }
  ],
  "total_count": 1
}

Read estimated_credits before submitting anything. It is the number your agent should be checking against whatever budget you gave it, and it is the only warning you get before the credits are spent.

An empty pending_approvals array with total_count: 0 is the normal state. It means nothing is waiting, and it also means anything whose code has already expired has dropped out of the list rather than sitting there stale.

What Request Details Carries

request_details holds the parameters of the operation itself, and its shape depends on the operation type. Read it if your agent needs to decide whether to approve rather than approving whatever it finds.

Crawl Operations:

"request_details": {
  "notes": "Updated crawl for recent site changes"
}

Competitor Research Operations:

"request_details": {
  "keywords": ["seo tools", "link analysis"],
  "tier": "basic",
  "notes": "Research for Q4 strategy"
}

New Project Operations:

"request_details": {
  "website": "https://newclient.com",
  "name": "New Client Project",
  "notes": "Initial client onboarding"
}

The Three Errors

401 Unauthorized - Missing Authorization:

{
  "error": "Missing Authorization header"
}

The header was absent or did not start with Bearer . This is usually a client that sends the key in the wrong header.

401 Unauthorized - Invalid Key:

{
  "error": "Invalid agent key"
}

The key does not match any agent configuration. Check you copied the whole thing from Settings and that it was not regenerated since.

403 Forbidden - IP Restricted:

{
  "error": "IP not allowed"
}

The key is good and the address it called from is not on the allowlist. Cloud workers change addresses more often than people expect, so check the address the request actually came from before assuming the list is wrong.

Fitting It Into a Workflow

The full cycle is four steps: the MCP queues with queue_crawl, queue_competitor_research or create_new_project, this endpoint returns the code, the MCP approval_code tool submits it, and the work starts. Everything after that is normal - results land where they always land, and What Do I Do Next reads them the same way.

If you would rather not run a poller at all, an API key in Settings can carry an auto-approve switch that removes the approval step entirely. That is fewer moving parts and strictly less oversight, and which of those matters more is your call.

Keeping It Under Control

Codes expire four days after the operation is queued, which bounds how long a leaked response is worth anything. Keep the allowlist to addresses you recognize, and rotate the agent key on the same schedule you rotate anything else.

Approval automation means your agent is spending your credits without asking, and you remain responsible for what it decides. The queue in your dashboard is the record of every automated approval, and it is worth reading weekly until you trust what the agent is doing.

What Does the Math Say
About Your Site?

Finding out is free and takes minutes.

Recent Articles

SEO Report Builder

Drag widgets onto a page, click each one to set it up, and send your client a link that shows current numbers every time they open it. Free with every account.

SEOLinkMap MCP Server Complete Guide

Every user gets this futuristic webpage free to chat with your own data, or wire it into your agentic workflow.

Understanding Site Structure

Page depth is how many clicks it takes to reach a page from your homepage, and the visualization shows depth and content clusters as shapes instead of rows.

Project Management Guide

A project comes before the visualization and the optimization tools, and its domain setting decides which version of your pages LinkMap analyzes.

Managing Your Site Pages

The Pages interface manages the pages you have and the ones you are planning, with parent-child relationships that shape structure and how each page scores.

Keyword Management and Research

The keyword management interface sits under the Keywords tab in the visualization, where you assign keywords to pages with volume and a 0 to 100 difficulty.

Popular Articles

Connect Your AI Chat Tool to MCP Servers

This guide shows you exactly how to connect any MCP server URL to popular AI platforms, turning conversations into productive workflows.

SEO Report Builder

Drag widgets onto a page, click each one to set it up, and send your client a link that shows current numbers every time they open it. Free with every account.

SEOLinkMap MCP Server Complete Guide

Every user gets this futuristic webpage free to chat with your own data, or wire it into your agentic workflow.

Analytics and Reporting

This guide explains how to leverage comprehensive insights and detailed reporting tools for data-driven decision making

Agency Team Roles And Permissions

Five roles, three permission layers, and no per-seat fee on any tier. How to set up and run an SEOLinkMap agency team.

Project Management Guide

A project comes before the visualization and the optimization tools, and its domain setting decides which version of your pages LinkMap analyzes.

Other Categories

Chat with your own SEO data
Connect Claude, ChatGPT, or any AI chat to your private MCP server and ask "what should I fix first?" It answers from your data - crawls, rankings, competitor research, backlinks - and can even queue new analysis for you.

Wire it into your agentic system and it can re-measure a page while your agents work on it - change, measure, repeat.

Free and paid tiers have your own private MCP server alongside the dashboard you'd expect.

No account yet? The public server below answers anything about features, pricing, or support - and will pull a real SERP correlation analysis, methodology and raw data included.
https://seolinkmap.com/mcp