Alphanume Biotech API

The Biotech API from Alphanume — 2 operation(s) for biotech.

Operations 2

GET /v1/biotech/advisory-committees FDA advisory-committee (AdCom) votes: every drug/biologic advisory committee #
GET /v1/biotech/fda-response-events Adverse FDA regulatory actions disclosed in 8-Ks: Complete Response Letters, #

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/alphanume-com:alphanume-com-biotech-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

alphanume-com-biotech-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    url: https://alphanume.com
  description: 'Point-in-time, survivorship-aware datasets for US equities and options research. Every response is JSON: {"count": N, "data": [...]} (paginated endpoints add has_more and next_cursor). Dates are always YYYY-MM-DD. Access: every dataset requires an Alphanume Pro API key (the Free plan is retired as of September 6, 2026). A 403 error with code PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED means the key''s plan does not cover the request -- it does not mean the data is missing. Authentication: send your API key in the X-API-Key header (or Authorization: Bearer). Rate limit: 600 requests/minute. Keys come with a Pro subscription at https://alphanume.com/pricing. The same datasets are available as MCP tools at https://mcp.alphanume.com/mcp.'
  title: Alphanume Biotech API
  version: 1.1.0
servers:
- url: https://api.alphanume.com
security:
- ApiKeyHeader: []
- BearerKey: []
tags:
- name: Biotech
paths:
  /v1/biotech/advisory-committees:
    get:
      description: 'FDA advisory-committee (AdCom) votes: every drug/biologic advisory committee

        meeting from 2024 forward, with the committee''s exact vote tallies extracted from

        the official minutes PDFs (verified against the PDFs) -- one row per (meeting, vote

        question). The tally (vote_yes/vote_no/vote_abstain), the verbatim question, which

        answer was the product-favorable one, and whether the favorable side won; plus

        sponsor, drug, indication, committee, center, meeting status, and links to the

        minutes/transcript/briefing materials so any number can be checked at the source.


        A meeting with no tally is still a row -- vote_evidence says why (minutes not

        posted yet vs discussion-only vs not held), which is the difference between ''no

        data'' and ''no vote''. Minutes land MONTHS after meetings, so recent meetings sit at

        minutes_not_posted until FDA publishes; rows re-label automatically when materials

        change. The forward calendar (scheduled meetings) is included. AdCom votes precede

        FDA decisions by weeks-to-months and FDA usually -- not always -- follows them.


        Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or

        DATE_RANGE_RESTRICTED error means the key''s plan does not cover the request --

        it does not mean the data is missing. Note: meetings are sparse (a few per

        month), so short date windows are often legitimately empty.'
      operationId: get_advisory_committee_votes
      parameters:
      - description: Committee abbreviation (e.g. ODAC, VRBPAC, PDAC) or name substring. Matches joint meetings via the full committee list, so PDAC finds meetings where it co-sat.
        in: query
        name: committee
        required: false
        schema:
          type: string
      - description: 'Owning FDA center: CDER, CBER, or OC (Office of the Commissioner).'
        in: query
        name: center
        required: false
        schema:
          type: string
      - description: held, scheduled, postponed, or cancelled. 'scheduled' rows are the forward calendar.
        in: query
        name: meeting_status
        required: false
        schema:
          type: string
      - description: product_specific, compounding_nominations, strain_selection, safety_review, or policy_or_class_review.
        in: query
        name: meeting_topic_type
        required: false
        schema:
          type: string
      - description: 'Why a row does/doesn''t carry numbers: minutes_tally (real tally), minutes_no_tally, no_vote_held (discussion-only), minutes_not_posted (FDA hasn''t published minutes yet), meeting_not_held.'
        in: query
        name: vote_evidence
        required: false
        schema:
          type: string
      - description: true = only rows with a numeric vote tally; false = only placeholder/no-tally rows.
        in: query
        name: has_tally
        required: false
        schema:
          type: string
      - description: true = the product-favorable side won; false = it lost. Ties and strain-selection votes are NULL and excluded by either value.
        in: query
        name: vote_outcome_favorable
        required: false
        schema:
          type: string
      - description: Case-insensitive substring on the drug/asset name (2-100 chars).
        in: query
        name: drug
        required: false
        schema:
          type: string
      - description: Case-insensitive substring on the sponsor company (2-100 chars).
        in: query
        name: sponsor
        required: false
        schema:
          type: string
      - description: Exact normalized asset key -- the group-by for 'every AdCom appearance of this asset' and the linkage audit key.
        in: query
        name: asset_key
        required: false
        schema:
          type: string
      - description: Substring on the application identifiers (NDA/BLA/sNDA numbers as stated in the materials).
        in: query
        name: application
        required: false
        schema:
          type: string
      - description: Exact meeting page slug -- all vote rows of one meeting.
        in: query
        name: meeting_key
        required: false
        schema:
          type: string
      - description: Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters.
        in: query
        name: date
        required: false
        schema:
          type: string
      - description: Start of date range, inclusive (YYYY-MM-DD).
        in: query
        name: date_gte
        required: false
        schema:
          type: string
      - description: End of date range, inclusive (YYYY-MM-DD).
        in: query
        name: date_lte
        required: false
        schema:
          type: string
      - description: Start of date range, exclusive (YYYY-MM-DD).
        in: query
        name: date_gt
        required: false
        schema:
          type: string
      - description: End of date range, exclusive (YYYY-MM-DD).
        in: query
        name: date_lt
        required: false
        schema:
          type: string
      - description: YYYY-MM-DD, on last_updated -- rows re-projected after FDA posted new materials (minutes land months late).
        in: query
        name: updated_since
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
          description: Matching rows.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
      summary: 'FDA advisory-committee (AdCom) votes: every drug/biologic advisory committee'
      tags:
      - Biotech
  /v1/biotech/fda-response-events:
    get:
      description: 'Adverse FDA regulatory actions disclosed in 8-Ks: Complete Response Letters,

        full and partial clinical holds, and refuse-to-file letters, 2024+, each graded by

        an explicit severity precedence rule with the evidence flags the grade depends on

        served alongside it (new-trial-required, manufacturing-related, resubmission-path,

        hold-lifted). Follow-ups and resolutions are linked per (issuer, drug program), so

        an original hold row answers ''was it ever lifted, and how long did it take''.


        By default only classified FDA events are returned (~196 rows); the ~1,520 audited

        not-an-event rows the full-text sweep also retrieved are available with

        include_rejects=true. The date window filters disclosed_date (the EDGAR filing

        date); event_letter_date is extracted with its own precision enum and

        days_letter_to_disclosure is the selective-disclosure measure -- on

        initial_disclosure rows only (on follow-ups it measures distance to the original

        letter). Selective disclosure is the headline caveat: a CRL disclosed only in a

        10-Q, or never, is not here.


        Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or

        DATE_RANGE_RESTRICTED error means the key''s plan does not cover the request --

        it does not mean the data is missing.'
      operationId: get_fda_response_events
      parameters:
      - description: Ticker symbol filter, e.g. 'AAPL'. Case-insensitive.
        in: query
        name: ticker
        required: false
        schema:
          type: string
      - description: SEC CIK number (digits only).
        in: query
        name: cik
        required: false
        schema:
          type: string
      - description: 'Comma-separated: crl, clinical_hold_full, clinical_hold_partial, refuse_to_file, other_fda_action. (not_a_setback_event requires include_rejects=true.)'
        in: query
        name: event_type
        required: false
        schema:
          type: string
      - description: 'What the document does about the event: initial_disclosure, follow_up_update, or resolution. Counting rows without this filter overstates events ~2.4x -- one program''s hold can be 3+ filings.'
        in: query
        name: filing_role
        required: false
        schema:
          type: string
      - description: 'Comma-separated severity grades: program_terminated, major_delay_new_trial_required, manufacturing_only, addressable_deficiencies, safety_signal_no_path_stated, unstated, not_restated. Rank encodes grading precedence, NOT market impact.'
        in: query
        name: severity
        required: false
        schema:
          type: string
      - description: true = events with a linked later resolution (hold lifted, approval, resubmission accepted); false = still open. NULL rows are themselves resolutions.
        in: query
        name: resolved
        required: false
        schema:
          type: string
      - description: true = include the ~1,520 audited 'not_a_setback_event' rows (boilerplate the recall-first sweep retrieved and the labeler rejected, each with its reason). Default = real FDA events only.
        in: query
        name: include_rejects
        required: false
        schema:
          type: string
      - description: Case-insensitive substring on the drug/asset name (3+ chars).
        in: query
        name: drug_search
        required: false
        schema:
          type: string
      - description: Exact normalized program key -- groups all filings about one program and audits the served linkage columns.
        in: query
        name: asset_key
        required: false
        schema:
          type: string
      - description: Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters.
        in: query
        name: date
        required: false
        schema:
          type: string
      - description: Start of date range, inclusive (YYYY-MM-DD).
        in: query
        name: date_gte
        required: false
        schema:
          type: string
      - description: End of date range, inclusive (YYYY-MM-DD).
        in: query
        name: date_lte
        required: false
        schema:
          type: string
      - description: Start of date range, exclusive (YYYY-MM-DD).
        in: query
        name: date_gt
        required: false
        schema:
          type: string
      - description: End of date range, exclusive (YYYY-MM-DD).
        in: query
        name: date_lt
        required: false
        schema:
          type: string
      - description: YYYY-MM-DD, on last_updated -- rows touched by the linkage sweep since this date.
        in: query
        name: updated_since
        required: false
        schema:
          type: string
      - description: 'Pagination: ''date'' from next_cursor (send with cursor_accession).'
        in: query
        name: cursor_date
        required: false
        schema:
          type: string
      - description: 'Pagination: ''accession_number'' from next_cursor (send with cursor_date).'
        in: query
        name: cursor_accession
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEnvelope'
          description: Matching rows.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
      summary: 'Adverse FDA regulatory actions disclosed in 8-Ks: Complete Response Letters,'
      tags:
      - Biotech
components:
  schemas:
    PaginatedEnvelope:
      properties:
        count:
          type: integer
        data:
          items:
            type: object
          type: array
        has_more:
          type: boolean
        next_cursor:
          description: 'Keyset cursor: pass its fields back as the cursor_* query parameters to fetch the next page.'
          type:
          - object
          - 'null'
      required:
      - count
      - data
      - has_more
      - next_cursor
      type: object
    Envelope:
      properties:
        count:
          type: integer
        data:
          items:
            type: object
          type: array
      required:
      - count
      - data
      type: object
    Error:
      additionalProperties: true
      properties:
        error: {}
      type: object
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Missing or unrecognized API key.
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: 'PRO_SUBSCRIPTION_REQUIRED: the key''s plan does not include API access; every endpoint requires an active Pro subscription. DATE_RANGE_RESTRICTED: a legacy free-tier key asked for dates outside its window. In both cases the data is not missing.'
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Invalid or conflicting query parameters.
    RateLimited:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Rate limit exceeded (600/min); the body carries retry_after_seconds.
  securitySchemes:
    ApiKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    BearerKey:
      scheme: bearer
      type: http
externalDocs:
  description: MCP server exposing these datasets as tools (OAuth or X-API-Key).
  url: https://mcp.alphanume.com/mcp