SharpAPI Deep Links API

Sportsbook deep link generation

Operations 2

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sharpapi:sharpapi-deep-links-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sharpapi-deep-links-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sharp Deep Links API
  version: 3.28.0
  description: Real-time sports betting odds API with +EV detection, arbitrage, middles, and low-hold opportunities.
  contact:
    name: SharpAPI Support
    url: https://sharpapi.io
    email: support@sharpapi.io
  license:
    name: Proprietary
    url: https://sharpapi.io/terms
  x-generated-at: '2026-10-13T20:02:34Z'
  x-commit-sha: 850f5cb
servers:
- url: https://api.sharpapi.io/api/v1
  description: Production
security:
- ApiKeyHeader: []
- BearerAuth: []
tags:
- name: Deep Links
  description: Sportsbook deep link generation
paths:
  /deeplinks/batch:
    post:
      operationId: batchDeepLinks
      summary: Batch deep link lookup
      description: Returns redirect paths for multiple odds IDs or opportunity hash IDs. Resolved IDs return a redirect path, unresolvable IDs return null. Requires **Hobby** tier or higher.
      tags:
      - Deep Links
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - ids
              properties:
                ids:
                  type: array
                  items:
                    type: string
                  maxItems: 500
                state:
                  description: US state code for deep-link routing only; does not filter odds or return state-specific prices. Uses the 50 US state codes plus dc; omitted, empty, or unsupported values (including on) fall back to pa in this batch endpoint. The single-link redirect rejects unsupported nonempty codes instead.
                  type: string
                  default: pa
            example:
              ids:
              - '17336125542407'
              - 77b0749a1faae425
              state: nj
      responses:
        '200':
          description: Redirect paths for each ID
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    additionalProperties:
                      type:
                      - string
                      - 'null'
                      description: Redirect path (e.g. /api/v1/deeplink/{id}) or null if unavailable
                  updated_at:
                    type: string
                    format: date-time
              example:
                data:
                  '17336125542407': /api/v1/deeplink/17336125542407
                  77b0749a1faae425: null
                updated_at: '2026-02-11T12:00:15.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/TierRestricted'
  /deeplink/{id}:
    get:
      operationId: redirectDeepLink
      summary: Deep link redirect
      description: 'Redirects to a sportsbook deep link. No authentication required.

        Returns a 302 redirect to the sportsbook URL, or 404 if the link cannot be generated.'
      tags:
      - Deep Links
      security: []
      parameters:
      - name: id
        in: path
        required: true
        description: Opportunity or event identifier
        schema:
          type: string
      - name: state
        in: query
        description: US state code for deep-link routing only; does not filter odds or return state-specific prices. Accepts the 50 US state codes plus dc. Unsupported nonempty codes (including on) return 400 invalid_filter. Omitted or empty values use pa.
        schema:
          type: string
          default: pa
      - name: book
        in: query
        description: Target sportsbook
        schema:
          type: string
      - name: game_id
        in: query
        description: Game/event ID
        schema:
          type: string
      - name: sport
        in: query
        schema:
          type: string
      - name: league
        in: query
        schema:
          type: string
      - name: home
        in: query
        description: Home team name
        schema:
          type: string
      - name: away
        in: query
        description: Away team name
        schema:
          type: string
      - name: fallback
        in: query
        description: Where to redirect if the deep link cannot be resolved. Honoured only for an absolute http or https URL, with no port or user info, on sharpapi.io, sharplines.io or the website of a sportsbook the endpoint recognises (subdomains count). Any other value is ignored, so an unresolved ID returns 404.
        schema:
          type: string
          format: uri
      responses:
        '302':
          description: Redirect to sportsbook
          headers:
            Location:
              description: Sportsbook deep link URL
              schema:
                type: string
                format: uri
        '404':
          description: Deep link not found, and no accepted `fallback` URL was given
components:
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: invalid_request
              message: Missing required parameter
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing:
              summary: Missing API key
              value:
                error:
                  code: missing_api_key
                  message: API key required
                  docs: https://docs.sharpapi.io/en/authentication#authentication-methods
            invalid:
              summary: Invalid API key
              value:
                error:
                  code: invalid_api_key
                  message: Invalid API key
                  docs: https://docs.sharpapi.io/en/authentication#authentication-methods
    TierRestricted:
      description: Feature requires a higher subscription tier
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: tier_restricted
              message: EV opportunities requires pro tier or higher
              tier: hobby
              required_tier: pro
              docs: https://sharpapi.io/pricing
  schemas:
    ErrorResponse:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              enum:
              - missing_api_key
              - invalid_api_key
              - unauthorized
              - forbidden
              - tier_restricted
              - rate_limited
              - invalid_request
              - validation_error
              - not_found
              - streaming_not_available
              - stream_limit_exceeded
              - service_unavailable
              - internal_error
              description: Machine-readable error code
            message:
              type: string
              description: Human-readable error message
            docs:
              type: string
              format: uri
              description: Link to relevant documentation
            tier:
              type: string
              description: Current subscription tier
            required_tier:
              type: string
              description: Minimum tier required for this feature
            retry_after:
              type: integer
              description: Unix timestamp (ms) when request can be retried
            retryAfter:
              type: integer
              description: Seconds until the request can be retried — same instant as retry_after, different unit and casing
            max_books:
              type: integer
            requested_books:
              type: integer
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key passed in the `X-API-Key` header
    BearerAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token in the `Authorization` header
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: API key as query parameter (for SSE/EventSource only)