---
title: "AceSense for AI agents: programmatic tennis video analysis"
description: "Pay-per-minute REST + MCP API for AI agents to analyze tennis videos. EU-hosted, prepaid credits, OpenAPI 3.1, MCP tools, x402 payments. Build coaching agents on AceSense."
slug: "agents"
date: "2026-04-26"
author: "Akshay Sarode"
category: "Developers"
schema: "TechArticle"
faq:
  - q: "Can my AI agent analyze a tennis video through AceSense?"
    a: "Yes. AceSense exposes a REST API at api.acesense.io and an MCP server at api.acesense.io/mcp. Both accept Bearer API keys (phk_…) and bill against prepaid credits. Submit a job, poll for status, fetch the analysis JSON when done, same shape as the in-app workflow but agent-callable."
  - q: "How much does it cost per video?"
    a: "Pricing is per minute of video processed at €0.75/min (USD ≈ $0.80, GBP ≈ £0.65). A typical 90-minute match costs about €67. Free tier gives 3 analyses/month with no API key required for evaluation; paid agent usage uses prepaid credits topped up via Stripe Checkout."
  - q: "What protocols do you support for agent payments?"
    a: "Stripe-hosted prepaid balances (the default), plus x402 payment-required headers and MPP machine-payment-protocol discovery. Agents that already speak x402 can pay per-call without account setup. See /.well-known/api-catalog for the full discovery chain."
  - q: "Is this an MCP server I can plug into Claude / ChatGPT?"
    a: "Yes. The MCP server at api.acesense.io/mcp uses Streamable HTTP transport and exposes tools, analyze_tennis_video, get_job_status, get_analysis_result, get_pricing, list_my_jobs, plus markdown resources (pricing, accuracy, how-it-works, faq). Bearer auth via the same API key as the REST endpoint."
  - q: "Where is video data hosted? GDPR-compliant?"
    a: "All uploaded video lives in europe-west1 (Belgium), processed by GPU workers in the same region. AceSense Inc. is a GDPR Article 28 sub-processor for any human end-user whose video an agent submits, agents acting on behalf of an EU resident must have their own lawful basis. DPA available on request."
  - q: "What's the rate limit for an API key?"
    a: "Default: 10 requests/min and 200 jobs/day per API key. Plan-tier keys (set via the user's billing settings) can raise these. Submit a support request if you need higher limits for production-scale agent operations."
cta:
  primary: "Read the API docs"
  secondary: "See pricing"
---

If you're building an AI agent that helps tennis players improve, a coaching bot, a club-management tool, a training-platform integration, and you need a real per-shot video analysis backend, AceSense is built for that. Same pipeline that powers the AceSense iOS + Android app (TrackNet → court keypoints → MediaPipe pose → CatBoost shot/bounce classification → stroke quality), exposed as a clean pay-per-minute API.

This page is the public-facing entry point. Full technical docs live at [docs.acesense.io](https://docs.acesense.io); the OpenAPI 3.1 spec is at [openapi.json](/openapi.json); the MCP server card is at [`/.well-known/mcp/server-card.json`](/.well-known/mcp/server-card.json).

## How it works

```
1. Sign up for an API key       → POST  https://api.acesense.io/v1/api-keys
2. Top up prepaid credits       → POST  https://api.acesense.io/v1/billing/checkout  (Stripe-hosted)
3. Submit a video               → POST  https://api.acesense.io/v1/jobs
4. Poll for completion          → GET   https://api.acesense.io/v1/jobs/{jobId}
5. Fetch the analysis           → GET   https://api.acesense.io/v1/jobs/{jobId}/result
```

Or via MCP:

```
POST https://api.acesense.io/mcp
Authorization: Bearer phk_...
Content-Type: application/json

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "analyze_tennis_video",
              "arguments": { "videoUrl": "https://..." } } }
```

## Pricing

| Tier | Per-minute (EUR) | Per-minute (USD) | Per-minute (GBP) | Notes |
|---|---|---|---|---|
| Standard | €0.75 | $0.80 | £0.65 | Default for all agent API keys |
| Volume (>5,000 min/mo) | €0.55 | $0.60 | £0.48 | Email support@acesense.io |
| Enterprise | custom | custom | custom | Self-hosted GPU optional |

A 90-minute match costs about **€67**. A 5-minute serve drill costs **€3.75**.

The first €10 of credit is free for all new API keys, enough to process ~13 minutes and decide if AceSense fits your use case.

## Auth

```
Authorization: Bearer phk_<24-byte-url-safe-random>
```

Keys are SHA-256-hashed at rest, never logged. Rotate at any time via the [admin panel](https://admin.acesense.io) or the `revokeApiKey` callable.

## Discovery surface (well-known endpoints)

| Path | Purpose | Spec |
|---|---|---|
| [`/openapi.json`](/openapi.json) | OpenAPI 3.1, all GET endpoints on the marketing site + the api.acesense.io schema | OpenAPI 3.1 |
| [`/.well-known/api-catalog`](/.well-known/api-catalog) | Linkset of public retrievable resources | RFC 9727 |
| [`/.well-known/mcp/server-card.json`](/.well-known/mcp/server-card.json) | MCP server metadata | SEP-1649 |
| [`/.well-known/agent-skills/index.json`](/.well-known/agent-skills/index.json) | Agent Skills RFC v0.2.0 catalogue | Cloudflare Agent Skills |
| [`/.well-known/openid-configuration`](/.well-known/openid-configuration) | OIDC discovery (Firebase Auth issuer) | OIDC 1.0 |
| [`/.well-known/x402`](/.well-known/x402) | x402 payment-required discovery | x402 |
| [`/.well-known/mpp.json`](/.well-known/mpp.json) | MPP machine-payment discovery | MPP |
| [`/.well-known/acp.json`](/.well-known/acp.json) | ACP merchant discovery | ACP v0.1 |

## Use cases for agent operators

- **Tennis-coaching chatbots**, agent uploads a user's match video, returns coaching tips. Pay per-minute, pass-through to your end-user pricing.
- **Training-platform integrations**, embed AceSense into a course platform; auto-analyze homework videos and surface stroke-quality scores in your LMS.
- **Club-management software**, analyze junior tournament matches in bulk, push reports to parents/coaches.
- **Research / dataset enrichment**, annotate large collections of tennis video for labeled-data products.

## What we don't do

We're not a content marketplace. AceSense doesn't take a cut of an agent operator's downstream revenue. The pricing above is the only thing you pay; there are no per-impression or per-end-user surcharges.

## Get started

1. Sign up: [acesense.io/signup](/signup) (creates a Firebase user account).
2. Generate an API key: visit [admin.acesense.io](https://admin.acesense.io) → Developer → Create API Key.
3. Top up your balance: Stripe Checkout flow.
4. First call: `curl -H "Authorization: Bearer phk_..." https://api.acesense.io/v1/healthz`.

Email **support@acesense.io** with your project description for higher rate limits or volume pricing.

## Related

- [Architecture overview](https://docs.acesense.io/architecture/overview)
- [Accuracy methodology](/accuracy)
- [How AceSense works](/how-it-works)
- [Pricing (consumer)](/pricing)
