Athenian Integrations API

The integrations API from Athenian — 2 operation(s) for integrations.

Operations 2

GET /get/export Download all the data collected by Athenian for custom analysis #
POST /match/identities Match provided people names/logins/emails to the account's GitHub organization… #

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/athenian-integrations-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

athenian-integrations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: admin@athenian.co
    name: the administrator by email
  description: 'Server version: {{ server_version }} built on {{ build_date }} @ {{ commit }}


    Origin GitHub repository: athenianco/api-spec.'
  license:
    name: CC-BY-4.0
  title: '{{ title }} Integrations API'
  version: 2.1.86
servers:
- description: '{{ server_description }} - {{ server_url }}'
  url: '{{ server_url }}/v1'
tags:
- name: Integrations
paths:
  /get/export:
    get:
      operationId: get_everything
      parameters:
      - description: Numeric identifier of the account. Raises HTTP 400 if the user belongs to more than one account.
        explode: false
        in: query
        name: account
        required: false
        schema:
          type: integer
        style: form
      - description: Output file format. The default is `parquet`.
        explode: false
        in: query
        name: format
        required: false
        schema:
          enum:
          - parquet
          type: string
        style: form
      responses:
        200:
          content:
            application/zip:
              schema:
                format: binary
                type: string
          description: Uncompressed ZIP archive with binary files in the configured format.
        400:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestError'
          description: Invalid query parameter values.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user does not belong to the specified account.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The installation has not finished yet.
        424:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingSettingsError'
          description: One or more logical repositories miss the release settings.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Download all the data collected by Athenian for custom analysis
      tags:
      - Integrations
      x-openapi-router-controller: athenian.api.controllers.integrations_controller
  /match/identities:
    post:
      operationId: match_identities
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchIdentitiesRequest'
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchedIdentities'
          description: Computed identities mapping.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Match provided people names/logins/emails to the account's GitHub organization…
      tags:
      - Integrations
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.integrations_controller
components:
  schemas:
    MissingSettingsError:
      $ref: '#/components/schemas/GenericError'
    DeveloperID:
      description: 'User name which uniquely identifies any developer on any service provider.

        The format matches the profile URL without the protocol part.

        '
      example: github.com/vmarkovtsev
      type: string
    NoSourceDataError:
      $ref: '#/components/schemas/GenericError'
    MatchedIdentity:
      description: Identity mapping of a specific contributor.
      example:
        confidence: 1
        from:
          names:
          - Vadim Markovtsev
        to: github.com/vmarkovtsev
      properties:
        from:
          $ref: '#/components/schemas/ContributorIdentity'
        to:
          anyOf:
          - type:
            - string
            - 'null'
          - $ref: '#/components/schemas/DeveloperID'
        confidence:
          description: Value from 0 to 1 indicating how similar are the users.
          format: float
          maximum: 1
          minimum: 0
          type: number
      required:
      - confidence
      - from
      - to
      type: object
    MatchIdentitiesRequest:
      additionalProperties: false
      description: Request body of `/match/identities`.
      example:
        account: 1
        identities:
        - emails:
          - eiso@athenian.co
        - names:
          - Vadim Markovtsev
          - vmarkovtsev
      properties:
        account:
          description: User's account ID.
          type: integer
        identities:
          items:
            $ref: '#/components/schemas/ContributorIdentity'
          type: array
      required:
      - account
      - identities
      type: object
    InvalidRequestError:
      allOf:
      - $ref: '#/components/schemas/GenericError'
      - properties:
          pointer:
            description: Path to the offending request item.
            example: .granularity
            type: string
        type: object
    ContributorIdentity:
      additionalProperties: false
      description: Information about a contributor that may be utilized to match identities.
      example:
        emails:
        - vadim@athenian.co
        names:
        - Vadim Markovtsev
        - vmarkovtsev
        - Vadim
      properties:
        emails:
          description: Email addresses belonging to the person.
          items:
            format: email
            type: string
          type: array
        names:
          description: The person is known as each of these full names. The format is arbitrary.
          items:
            type: string
          type: array
      type: object
    MatchedIdentities:
      description: Response from `/match/identities` - mapping from supplied identities to GitHub organization members. The order matches the order of `MatchIdentitiesRequest.identities`.
      example:
      - from:
          emails:
          - gkwillie@athenian.co
        to: null
        confidence: 0.5
      - from:
          names:
          - Vadim Markovtsev
        to: github.com/vmarkovtsev
        confidence: 1
      items:
        $ref: '#/components/schemas/MatchedIdentity'
      type: array
    GenericError:
      example:
        detail: 'Unsupported metric: pr-xxx-time'
        status: 400
        title: Bad request syntax or unsupported method.
        type: /errors/InvalidRequestError
      properties:
        detail:
          description: Human-readable explanation specific to this occurrence of the problem.
          example: 'Unsupported metric: pr-xxx-time'
          type: string
        instance:
          description: URI reference that identifies the specific occurrence of the problem. It is `null` for 4xx, Sentry event ID for 5xx.
          example: 2763c4eabd7240f59829ee1a02546293
          type: string
        status:
          description: Duplicated HTTP status code.
          example: 400
          type: integer
        title:
          description: Short, human-readable summary of the problem type.
          example: Bad request syntax or unsupported method.
          type: string
        type:
          description: URI reference that identifies the problem type (RFC 7807).
          example: /errors/InvalidRequestError
          type: string
      required:
      - status
      - title
      - type
      type: object
  responses:
    InvalidRequestErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InvalidRequestError'
      description: The request is invalid.
  securitySchemes:
    apiKeyAuth:
      description: 'Authorization by the value of `X-API-Key` header aka API token.

        The tokens are user- and account-specific. Create them by calling `/token/create`.

        The server automatically inserts `account` in the request''s body if it was not

        supplied by the user.'
      in: header
      name: X-API-Key
      type: apiKey
      x-apikeyInfoFunc: athenian.api.controllers.security_controller.info_from_apiKeyAuth
    bearerAuth:
      bearerFormat: JWT
      description: 'Regular JSON Web Token authorization powered by Auth0.

        The server expects an `Authorization: Bearer <token>` header and checks `<token>` by

        sending it to Auth0. Visit [{{ server_url | replace("api", "app") }}/bearer]({{ server_url | replace("api", "app") }}/bearer)

        to copy your current JWT that will expire within 24 hours.'
      scheme: bearer
      type: http
      x-bearerInfoFunc: athenian.api.controllers.security_controller.info_from_bearerAuth