sketchxflow-com Bridge API

The bridge API from sketchxflow-com — 10 operation(s) for bridge.

Operations 12

POST /api/bridge/pairing-codes Create Pairing Code #
GET /api/bridge/devices List Devices #
DELETE /api/bridge/devices/{device_id} Revoke Device #
POST /api/bridge/jobs Run Job #
GET /api/bridge/jobs List Jobs #
GET /api/bridge/jobs/{job_id} Get Job #
POST /api/bridge/models Build Model #
GET /api/bridge/models List Models #
DELETE /api/bridge/models/{slug} Delete Model #
POST /api/bridge/pair Pair #
POST /api/bridge/session Session #
POST /api/bridge/artifacts/{job_id} Upload Artifact #

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/sketchxflow-com:sketchxflow-com-bridge-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

sketchxflow-com-bridge-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SketchXFlow Bridge API
  version: 0.1.0
tags:
- name: Bridge
paths:
  /api/bridge/pairing-codes:
    post:
      tags:
      - Bridge
      summary: Create Pairing Code
      description: Mint a code to type on the machine that has Blender.
      operationId: create_pairing_code_api_bridge_pairing_codes_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PairingCodeRequest'
              default:
                label: ''
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/devices:
    get:
      tags:
      - Bridge
      summary: List Devices
      operationId: list_devices_api_bridge_devices_get
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/devices/{device_id}:
    delete:
      tags:
      - Bridge
      summary: Revoke Device
      description: 'Revoking is immediate.


        The record is tombstoned AND the live socket is closed, so a stolen laptop

        stops being able to run jobs the moment the button is pressed rather than at

        the end of some token lifetime. The close only reaches a socket this

        container happens to hold; one held elsewhere dies on its next job, because

        the token no longer resolves.'
      operationId: revoke_device_api_bridge_devices__device_id__delete
      parameters:
      - name: device_id
        in: path
        required: true
        schema:
          type: string
          title: Device Id
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/jobs:
    post:
      tags:
      - Bridge
      summary: Run Job
      description: 'Run one verb on one of this account''s machines and wait for it.


        A job that FAILED comes back 200 with `ok: false` and the reason — the

        caller wants to show "Blender said X", not a 500. Only the cases where we

        could not even ask (unknown verb, no machine, Blender absent) are errors.'
      operationId: run_job_api_bridge_jobs_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Bridge
      summary: List Jobs
      operationId: list_jobs_api_bridge_jobs_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          default: 25
          title: Limit
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/jobs/{job_id}:
    get:
      tags:
      - Bridge
      summary: Get Job
      operationId: get_job_api_bridge_jobs__job_id__get
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/models:
    post:
      tags:
      - Bridge
      summary: Build Model
      description: 'Build a model in Blender and register it for the page generator.


        The build prompts on the machine (it changes the designer''s scene); the

        export that follows does not. Expect this to sit waiting on a human unless

        that machine runs with --bypass.'
      operationId: build_model_api_bridge_models_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BuildModelRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Bridge
      summary: List Models
      operationId: list_models_api_bridge_models_get
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/models/{slug}:
    delete:
      tags:
      - Bridge
      summary: Delete Model
      operationId: delete_model_api_bridge_models__slug__delete
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/pair:
    post:
      tags:
      - Bridge
      summary: Pair
      description: 'Swap a pairing code for a device token.


        Unauthenticated by design — the code IS the credential here, and it is

        single-use, ten minutes long, and drawn from about 2.8e11 combinations. The

        rate limit is belt and braces against someone trying anyway.'
      operationId: pair_api_bridge_pair_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PairRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/session:
    post:
      tags:
      - Bridge
      summary: Session
      description: Swap the device token for a single-use WebSocket ticket.
      operationId: session_api_bridge_session_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/bridge/artifacts/{job_id}:
    post:
      tags:
      - Bridge
      summary: Upload Artifact
      description: 'Agent: push a file a job produced.


        Authenticated with the device token rather than the socket ticket — uploads

        happen on ordinary HTTPS, well after the socket was established, and a

        30-minute render''s output should not depend on a 60-second ticket.'
      operationId: upload_artifact_api_bridge_artifacts__job_id__post
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: authorization
        in: header
        required: false
        schema:
          type: string
          default: ''
          title: Authorization
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_artifact_api_bridge_artifacts__job_id__post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_upload_artifact_api_bridge_artifacts__job_id__post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
        name:
          type: string
          title: Name
          default: ''
      type: object
      required:
      - file
      title: Body_upload_artifact_api_bridge_artifacts__job_id__post
    JobRequest:
      properties:
        verb:
          type: string
          title: Verb
        params:
          additionalProperties: true
          type: object
          title: Params
        device_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Device Id
        project_id:
          type: string
          title: Project Id
          default: ''
        reason:
          type: string
          maxLength: 200
          title: Reason
          default: ''
      type: object
      required:
      - verb
      title: JobRequest
    BuildModelRequest:
      properties:
        slug:
          type: string
          maxLength: 48
          minLength: 1
          title: Slug
        spec:
          additionalProperties: true
          type: object
          title: Spec
        title:
          type: string
          title: Title
          default: ''
        tags:
          items:
            type: string
          type: array
          title: Tags
        use_when:
          type: string
          title: Use When
          default: ''
        device_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Device Id
        project_id:
          type: string
          title: Project Id
          default: ''
        max_bytes:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Bytes
      type: object
      required:
      - slug
      - spec
      title: BuildModelRequest
      description: 'A model to build, described declaratively.


        `spec` is interpreted by the agent''s own bundled `build.py` — primitives,

        materials, modifiers. It is data, never Python: that is precisely what lets

        the build be described by a model in the cloud without the cloud getting to

        execute code on somebody''s workstation.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PairRequest:
      properties:
        code:
          type: string
          title: Code
        name:
          type: string
          title: Name
          default: ''
        hostname:
          type: string
          title: Hostname
          default: ''
        platform:
          type: string
          title: Platform
          default: ''
        agent_version:
          type: string
          title: Agent Version
          default: ''
      type: object
      required:
      - code
      title: PairRequest
    PairingCodeRequest:
      properties:
        label:
          type: string
          maxLength: 80
          title: Label
          default: ''
      type: object
      title: PairingCodeRequest