ARCNM Upload Links API

The upload-links API from ARCNM — 2 operation(s) for upload-links.

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/arcnm-io:arcnm-io-upload-links-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

arcnm-io-upload-links-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Arcnm Io Upload Links API
  version: 0.1.0
  description: 'Operations tagged upload-links across 2 of this provider''s published API definitions: openapi-public.json, arcnm-io-openapi.yml. Each path carries the servers of the definition it was published in.'
security:
- ApiKeyAuth: []
- OAuth2PasswordBearer: []
tags:
- name: upload-links
paths:
  /api/v1/upload-links:
    post:
      tags:
      - upload-links
      summary: Issue a login-free upload link
      description: 'A link to the upload page that works without signing in, for a person whose files are on their own computer: they open it, drop a STEP file per part (a PDF drawing optional) and every part is filed and priced in this organization, in the environment and folder the link names. It ends 30 minutes after it is issued or once `max_uploads` parts are uploaded, whichever comes first, and `DELETE /upload-links/{upload_session_id}` ends it at once. Each part uses one calculation of the quota if its calculation succeeds, exactly as an upload of your own; the calculations carry the API key the link was issued with, so its spend cap holds for them. Every part becomes a new part — a link never adds a revision to a part that is already there. List the calculations with `GET /calculations?upload_session_id=`. An organization has at most 50 links open at once: past that, revoke one or wait until one closes.'
      operationId: upload-links-create_upload_link
      security:
      - ApiKeyAuth: []
      - OAuth2PasswordBearer: []
      parameters:
      - name: X-API-Key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: X-Org-Slug
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Org-Slug
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadLinkCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadLinkIssued'
        '409':
          description: '`upload_link_too_many_open`: the organization already has as many links open as it may (`details.open_links`, `details.max_open_links`).'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/upload-links/{upload_session_id}:
    delete:
      tags:
      - upload-links
      summary: Revoke an upload link
      description: 'End an upload link at once: the page refuses every upload from then on. What was uploaded before stays, and keeps its calculations. Revoking a revoked link changes nothing and answers the same.'
      operationId: upload-links-revoke_upload_link
      security:
      - ApiKeyAuth: []
      - OAuth2PasswordBearer: []
      parameters:
      - name: upload_session_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Upload Session Id
      - name: X-API-Key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: X-Org-Slug
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Org-Slug
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadLinkRevoked'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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
    UploadLinkRevoked:
      properties:
        upload_session_id:
          type: string
          format: uuid
          title: Upload Session Id
          description: The link's id.
        revoked_at:
          type: string
          format: date-time
          title: Revoked At
          description: When the link was revoked (UTC).
        uploads_used:
          type: integer
          title: Uploads Used
          description: How many parts were uploaded through the link before it was revoked.
      type: object
      required:
      - upload_session_id
      - revoked_at
      - uploads_used
      title: UploadLinkRevoked
    UploadLinkCreate:
      properties:
        environment_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Environment Id
          description: Costing environment the uploaded parts are priced in. Omit for the organization's default environment. The link keeps the environment it was issued for.
        folder_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Folder Id
          description: Folder the uploaded parts are filed into. Omit to file them at the workspace root.
        max_uploads:
          type: integer
          maximum: 20.0
          minimum: 1.0
          title: Max Uploads
          description: How many parts the link may upload, 1 to 20. Each part is one STEP file with an optional drawing, and uses one calculation of the quota if its calculation succeeds.
          default: 1
      additionalProperties: false
      type: object
      title: UploadLinkCreate
    UploadLinkIssued:
      properties:
        upload_session_id:
          type: string
          format: uuid
          title: Upload Session Id
          description: The link's id. Every calculation an upload through the link creates carries it, and `upload_session_id` on the calculation list lists exactly those.
        url:
          type: string
          title: Url
          description: The upload page for the person to open in a browser. It works without signing in until `expires_at`, or until `max_uploads` parts are uploaded. Whoever has the URL can upload, so share it only with that person.
        issued_at:
          type: string
          format: date-time
          title: Issued At
          description: When the link was issued (UTC).
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: When the link stops working (UTC).
        max_uploads:
          type: integer
          title: Max Uploads
          description: How many parts the link may upload.
        environment_id:
          type: string
          format: uuid
          title: Environment Id
          description: The costing environment the uploaded parts are priced in.
        folder_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Folder Id
          description: The folder the uploaded parts are filed into; null for the root.
      type: object
      required:
      - upload_session_id
      - url
      - issued_at
      - expires_at
      - max_uploads
      - environment_id
      title: UploadLinkIssued
  securitySchemes:
    OAuth2PasswordBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: /api/v1/sessions/login
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Server-to-server API key in the ``X-API-Key`` header, e.g. ``ak_live_…``. See the Authentication guide. Do not send it as ``Authorization: Bearer`` — that header is reserved for session / MCP JWTs.'
x-refined-from:
- openapi-public.json
- arcnm-io-openapi.yml