Mabl Application API

The Application API from Mabl — 5 operation(s) for application.

Operations 8

GET /applications Get applications by workspace #
POST /applications Create application #
GET /applications/{id} Get application by ID #
DELETE /applications/{id} Remove application #
PATCH /applications/{id} Update application #
POST /applicationSummary Upsert application summary #
GET /applicationSummary/{id} Get application summary by ID #
GET /applications/{application_id}/summary Get latest summary for application #

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/mabl:mabl-application-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

mabl-application-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: mabl Application API
  description: APIs for interacting with mabl services
  version: 0.599.3.1792436330
  x-readme-id: 62c896636916ce01d2ff4f5a
servers:
- url: /
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Application
paths:
  /applications:
    get:
      tags:
      - Application
      summary: Get applications by workspace
      description: Get all applications in a workspace
      operationId: queryApplications
      parameters:
      - name: workspace_id
        in: query
        description: ID of workspace in which to query applications
        required: true
        style: form
        explode: true
        schema:
          type: string
      - name: limit
        in: query
        description: Pagination limit
        required: false
        style: form
        explode: true
        schema:
          minimum: 1
          type: integer
          format: int32
      - name: cursor
        in: query
        description: Pagination cursor
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        '200':
          description: Applicatations in given workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationQueryResult'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-mabl-action: Read::Application
      x-mabl-scope: public
    post:
      tags:
      - Application
      summary: Create application
      description: Create a new application
      operationId: createApplication
      requestBody:
        description: Application to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
        required: true
      responses:
        '201':
          description: Application created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-mabl-action: Create::Application
      x-mabl-scope: public
  /applications/{id}:
    get:
      tags:
      - Application
      summary: Get application by ID
      description: Get application information by ID
      operationId: getApplication
      parameters:
      - name: id
        in: path
        description: Application ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Application with given ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-mabl-action: Read::Application
      x-mabl-scope: public
    delete:
      tags:
      - Application
      summary: Remove application
      description: Remove an application
      operationId: removeApplication
      parameters:
      - name: id
        in: path
        description: Application ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Application removed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-mabl-action: Delete::Application
      x-mabl-scope: public
    patch:
      tags:
      - Application
      summary: Update application
      description: Update an existing application
      operationId: updateApplication
      parameters:
      - name: id
        in: path
        description: Application ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: If-Match
        in: header
        description: If-Match header according to http/1.1 spec section 14.24
        required: false
        style: simple
        explode: false
        schema:
          type: string
      - name: field_mask
        in: query
        description: Comma seperated set of fields to update. If provided, only fields in the field mask will be updated. Fields in the field mask but not in the body will be set to null.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      requestBody:
        description: Update to apply
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
        required: true
      responses:
        '200':
          description: Application updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-mabl-action: Edit::Application
      x-mabl-scope: public
  /applicationSummary:
    post:
      tags:
      - Application
      summary: Upsert application summary
      description: Create a new application summary version (AI-generated or user-created). Version number is auto-incremented.
      operationId: upsertApplicationSummary
      parameters:
      - name: If-Match
        in: header
        description: 'ETag of the current latest summary. Required when creating subsequent versions to prevent race conditions.

          Omit only when creating the first summary for an application. Returns 412 if:

          - Provided but no summary exists for the application

          - Provided but doesn''t match the current latest version''s ETag

          - Omitted when a summary already exists for the application

          '
        required: false
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Application summary to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationSummary'
        required: true
      responses:
        '201':
          description: Application summary created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationSummary'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '412':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-generate-raw: true
      x-mabl-action: Edit::Application
  /applicationSummary/{id}:
    get:
      tags:
      - Application
      summary: Get application summary by ID
      description: Get an application summary by its unique ID
      operationId: getApplicationSummary
      parameters:
      - name: id
        in: path
        description: Application summary ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Application summary with given ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationSummary'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-generate-raw: true
      x-mabl-action: Read::Application
  /applications/{application_id}/summary:
    get:
      tags:
      - Application
      summary: Get latest summary for application
      description: Get the most recent summary for an application
      operationId: getLatestApplicationSummary
      parameters:
      - name: application_id
        in: path
        description: Application ID
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Latest application summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationSummary'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-generate-raw: true
      x-mabl-action: Read::Application
components:
  responses:
    ErrorResponse401:
      description: User not authenticated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseGeneric'
    ErrorResponse400:
      description: Invalid or missing parameter
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseGeneric'
    ErrorResponse404:
      description: Entity not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseGeneric'
    ErrorResponse403:
      description: User not authorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseGeneric'
    ErrorResponse:
      description: Unknown error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseGeneric'
  schemas:
    Application:
      type: object
      properties:
        id:
          type: string
          description: Application ID
          readOnly: true
          x-mabl-scope: public
        created_time:
          type: integer
          description: Time application created
          format: int64
          readOnly: true
          x-mabl-scope: public
        created_by_id:
          type: string
          description: ID of user who created application
          x-mabl-scope: public
        last_updated_time:
          type: integer
          description: Time application last updated
          format: int64
          readOnly: true
          x-mabl-scope: public
        last_updated_by_id:
          type: string
          description: ID of user who last updated application
          x-mabl-scope: public
        organization_id:
          type: string
          description: (Deprecated, use workspace_id)
        workspace_id:
          type: string
          description: ID of workspace associated with application
          x-mabl-scope: public
        name:
          type: string
          description: Application display name
          x-mabl-scope: public
        description:
          type: string
          description: Application description
          x-mabl-scope: public
        ssl_options:
          $ref: '#/components/schemas/SslOptions'
        send_mabl_header:
          type: boolean
          description: Controls whether or not the x-mabl-agent header is sent on requests (can be overridden by plan and test)
          x-mabl-scope: public
        execution_runner_size:
          $ref: '#/components/schemas/ExecutionRunnerSizeEnum'
        enter_text_mode:
          $ref: '#/components/schemas/EnterTextModeEnum'
        bypass_actionability_checks:
          type: boolean
          description: 'Application-level preference for whether a click step may act on an element that

            fails actionability checks — disabled, hidden, covered, or unstable. Affects new

            click steps authored in the test editor or by the Test Creation Agent. `true`

            clicks the element anyway; `false` fails the step when the target is not

            actionable. Absent means no workspace preference. Per-step overrides set in the

            test editor always win.

            '
          x-mabl-scope: public
        skip_javascript_fallback_clicks:
          type: boolean
          description: 'Application-level preference for whether a click step skips the synthetic

            JavaScript fallback click that normally fires when the native browser click

            cannot reach the target element — for example when an overlay intercepts the

            click or the browser routes the input away from a cross-origin iframe.

            `true` fails the step with a clear error instead of clicking synthetically;

            `false` or absent allows the fallback (the historical behavior). Newly

            created applications default to `true`.

            '
          x-mabl-scope: public
        custom_test_id_attributes:
          type: array
          description: Custom HTML element attribute names mabl should prioritize when locating elements, in priority order
          items:
            type: string
          x-dao-serialize: true
      x-implements-interface:
      - ActivityTrackingBaseEntity
      - HasOrganizationId
      - HasName
    SslOptions:
      type: object
      properties:
        alpn_protocols:
          type: array
          description: ALPN protocols that should be used to communicate with this application, specified in order of preference (defaults to all)
          items:
            $ref: '#/components/schemas/AlpnProtocol'
        min_version:
          type: string
          deprecated: true
          enum:
          - TLSv1
          - TLSv1_1
          - TLSv1_2
          - TLSv1_3
          x-mabl-scope: public
          x-force-uppercase: true
        max_version:
          type: string
          deprecated: true
          enum:
          - TLSv1
          - TLSv1_1
          - TLSv1_2
          - TLSv1_3
          x-mabl-scope: public
          x-force-uppercase: true
    AlpnProtocol:
      type: string
      enum:
      - http1_1
      - h2
      - none
    GuardrailApprovalKind:
      type: string
      description: Who decides a guardrail approval. SELF is decided by the person the agent acts for; WORKSPACE, for an agent acting for an API key, by a workspace owner or editor.
      enum:
      - SELF
      - WORKSPACE
    GuardrailRefusal:
      type: object
      properties:
        id:
          type: string
          description: The id of the guardrail policy that decided the refusal.
        reason:
          type: string
          description: Why the policy refuses the request, written for the person the agent acts for.
        decision_id:
          type: string
          description: The id of this decision in the guardrail decision log.
        action:
          type: string
          description: The action the request was evaluated as, written Verb::Resource (for example Delete::Test), as declared by the operation's x-mabl-action extension.
        policy_source:
          type: string
          description: 'Who set the deciding policy: workspace for a rule the workspace''s owners wrote, account for a rule set for the workspace''s account, mabl_agent_type for the agent type''s ceiling, and mabl_default for mabl''s own defaults.'
        approval:
          description: The approval for this request; present when error_code is approval_required and the approval could be recorded. Without it the request cannot be approved.
          allOf:
          - $ref: '#/components/schemas/GuardrailApprovalRef'
      description: The guardrail policy that refused an agent request.
    GuardrailApprovalState:
      type: string
      description: Where a guardrail approval stands. PENDING awaits a decision and expires undecided after 24 hours; APPROVED lets the agent repeat the request, as often as it does, for 20 minutes; DENIED refuses the same request for 20 minutes after the decision, after which asking again opens a new approval; CANCELLED means a person withdrew it while pending or revoked it while approved. EXPIRED and CANCELLED are final.
      enum:
      - PENDING
      - APPROVED
      - DENIED
      - EXPIRED
      - CANCELLED
    ApplicationQueryResult:
      type: object
      properties:
        applications:
          type: array
          description: All applications that match query
          readOnly: true
          items:
            $ref: '#/components/schemas/Application'
          x-mabl-scope: public
        cursor:
          type: string
          description: Pagination cursor
          readOnly: true
          x-mabl-scope: public
    ApplicationSummary:
      required:
      - application_id
      - is_user_created_version
      - summary
      - workspace_id
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the application summary
          readOnly: true
        version:
          type: integer
          description: Business version number of this summary (auto-incremented by server)
          format: int64
          readOnly: true
        workspace_id:
          type: string
          description: ID of workspace associated with this summary
        application_id:
          type: string
          description: ID of the application this summary describes
        created_time:
          type: integer
          description: Time summary was created (epoch milliseconds)
          format: int64
          readOnly: true
        created_by_id:
          type: string
          description: ID of user or client who created the summary
          readOnly: true
        summary:
          type: string
          description: The full AI-generated summary text
        headline:
          type: string
          description: Short headline version of the summary
        previous_agent_summary_id:
          type: string
          description: ID of the previous AI-generated summary this was based on
        is_user_created_version:
          type: boolean
          description: Whether this version was created or edited by a user
        user_edits_summary:
          type: string
          description: User-provided summary text if is_user_created_version is true
        agent_type:
          $ref: '#/components/schemas/AgentType'
        agent_version:
          type: string
          description: Version of the AI agent that generated this summary
        test_summaries_used_count:
          type: integer
          description: Number of test summaries used to generate this summary
          format: int64
        test_details_used_invariant_ids:
          type: array
          description: Invariant IDs of tests whose details were used
          items:
            type: string
        screenshots_used_count:
          type: integer
          description: Number of screenshots analyzed for this summary
          format: int64
      description: AI-generated summary of an application based on test analysis
      x-implements-interface:
      - HasId
      - HasWorkspaceId
    AgentType:
      type: string
      enum:
      - test_authoring
      - flow_authoring
      - test_creation_planning
      - test_planning
      - agent_review
      - app_summary
      - test_run_analysis
      - test_recovery
      - runtime_recovery_summary_agent
      - plan_run_analysis
      - deployment_analysis
      - workspace_results_analysis
      - results_auto_analysis
      - workspace_assistant
      - app_modeling
      - app_modeling_run
      - file_assertion
      - test_impact
      - test_impact_shadow
      - repair_notes
      - external_agent
      - exploratory_qa
    GuardrailApprovalRef:
      type: object
      properties:
        id:
          type: string
          description: The approval's id.
        state:
          description: Where the approval stands.
          allOf:
          - $ref: '#/components/schemas/GuardrailApprovalState'
        kind:
          description: Who decides the approval.
          allOf:
          - $ref: '#/components/schemas/GuardrailApprovalKind'
        request_expires_time:
          type: integer
          description: When the approval expires if nobody decides it, in epoch milliseconds.
          format: int64
        url:
          type: string
          description: The mabl app page where a person reviews the approval.
      description: 'An approval a guardrail policy asks for. While it is PENDING, stop: give the person the url, tell them the request is waiting for approval, and do not repeat the request or poll in a loop. Once a person tells you it is APPROVED, repeat the identical request with the header X-Mabl-Approval set to id. DENIED means a person said no, so do not work around it.'
    ErrorResponseGeneric:
      type: object
      properties:
        id:
          type: string
          x-mabl-scope: public
        code:
          maximum: 599
          minimum: 100
          type: integer
          format: int32
          x-mabl-scope: public
        message:
          type: string
          x-mabl-scope: public
        error_code:
          type: string
          description: Machine-readable reason for the error, present only when the API names one. Values are guardrail_blocked (a guardrail policy refused an agent request), approval_required (a guardrail policy requires a person to approve the request first).
        guardrail:
          description: The guardrail policy that refused the request; present only when error_code is guardrail_blocked or approval_required.
          allOf:
          - $ref: '#/components/schemas/GuardrailRefusal'
    EnterTextModeEnum:
      type: string
      description: 'Application-level preference for how the "enter text" step types into inputs.

        Absent means "no preference; runtime falls back to its default."

        - `fill`: write the value atomically via Playwright''s `fill()`. Fast and reliable for standard inputs.

        - `press`: type one character at a time. Slower, but works with autocomplete / per-character event handlers.

        '
      enum:
      - fill
      - press
    ExecutionRunnerSizeEnum:
      type: string
      description: available runner sizes
      enum:
      - x1
      - x2
      - x3
      - x4
      - x5
      - x6
      - small
      - medium
      - large
      - inherit
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    bearerAuth:
      type: apiKey
      name: Authorization
      in: header