temp.md Lifecycle API

The Lifecycle API from temp.md — 5 operation(s) for lifecycle.

Operations 5

DELETE /temps/{tempId} Permanently revoke a Temp and delete its artifacts #
GET /temps/{tempId}/status Read lifecycle and access status #
POST /temps/{tempId}/restore Restore an expired Temp within its restore window #
POST /temps/{tempId}/snapshot Freeze the current Version #
PATCH /temps/{tempId}/settings Update Temp settings #

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/temp-md:temp-md-lifecycle-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

temp-md-lifecycle-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: temp.md Public Lifecycle API
  version: 1.0.0
  description: Publish agent-made files and applications to one canonical URL, update them atomically, and recover owner credentials without changing the shared link.
  termsOfService: https://temp.md/terms
  license:
    name: API terms
    url: https://temp.md/terms
servers:
- url: https://api.temp.md
  description: Production
tags:
- name: Lifecycle
paths:
  /temps/{tempId}:
    delete:
      operationId: revokeTemp
      summary: Permanently revoke a Temp and delete its artifacts
      description: Immediately makes the public link unavailable, revokes scoped capabilities, and deletes every stored Version. If storage cleanup is temporarily unavailable, the link remains revoked while cleanup is retried in the background.
      tags:
      - Lifecycle
      security:
      - tempCapability: []
      - accountBearer: []
      parameters:
      - $ref: '#/components/parameters/TempId'
      - $ref: '#/components/parameters/ClientIdentity'
      responses:
        '200':
          description: Temp revoked and artifacts deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevokeTempResult'
        '202':
          description: Temp revoked; artifact cleanup queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevokeTempResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
  /temps/{tempId}/status:
    get:
      operationId: getTempStatus
      summary: Read lifecycle and access status
      tags:
      - Lifecycle
      security:
      - tempCapability: []
      - accountBearer: []
      parameters:
      - $ref: '#/components/parameters/TempId'
      - $ref: '#/components/parameters/ClientIdentity'
      responses:
        '200':
          description: Temp status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TempStatus'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /temps/{tempId}/restore:
    post:
      operationId: restoreTemp
      summary: Restore an expired Temp within its restore window
      tags:
      - Lifecycle
      security:
      - tempCapability: []
      - accountBearer: []
      parameters:
      - $ref: '#/components/parameters/TempId'
      responses:
        '200':
          $ref: '#/components/responses/SuccessObject'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
        '429':
          $ref: '#/components/responses/RateLimited'
  /temps/{tempId}/snapshot:
    post:
      operationId: snapshotTemp
      summary: Freeze the current Version
      tags:
      - Lifecycle
      security:
      - tempCapability: []
      - accountBearer: []
      parameters:
      - $ref: '#/components/parameters/TempId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  maxLength: 120
              additionalProperties: false
      responses:
        '200':
          $ref: '#/components/responses/SuccessObject'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
  /temps/{tempId}/settings:
    patch:
      operationId: updateTempCapabilitySettings
      summary: Update Temp settings
      tags:
      - Lifecycle
      security:
      - tempCapability: []
      - accountBearer: []
      parameters:
      - $ref: '#/components/parameters/TempId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                commentsEnabled:
                  type: boolean
                spaMode:
                  type: boolean
              minProperties: 1
              additionalProperties: false
      responses:
        '200':
          $ref: '#/components/responses/SuccessObject'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    SuccessObject:
      description: Successful response
      content:
        application/json:
          schema:
            type: object
            additionalProperties: true
    Gone:
      description: Resource expired or recovery window closed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication required or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Credential lacks access
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
        code:
          type: string
        message:
          type: string
        request_id:
          type: string
        docs_url:
          type: string
          format: uri
        retry_after:
          type: integer
          minimum: 0
      additionalProperties: true
    RevokeTempResult:
      type: object
      required:
      - ok
      - tempId
      - canonicalUrl
      - status
      - artifactsDeleted
      - cleanupPending
      properties:
        ok:
          const: true
        tempId:
          type: string
        canonicalUrl:
          type: string
          format: uri
        status:
          const: revoked
        artifactsDeleted:
          type: integer
          minimum: 0
        cleanupPending:
          type: boolean
        message:
          type: string
      additionalProperties: false
    LifecycleStatus:
      type: string
      enum:
      - drafting
      - active
      - cooling
      - expired
    TempStatus:
      type: object
      required:
      - tempId
      - canonicalUrl
      - status
      - ownershipState
      - privacyMode
      - spaMode
      - moderationState
      - commentsEnabled
      - restoreEligible
      properties:
        tempId:
          type: string
        canonicalUrl:
          type: string
          format: uri
        status:
          $ref: '#/components/schemas/LifecycleStatus'
        ownershipState:
          enum:
          - anonymous
          - claimed
        privacyMode:
          enum:
          - unlisted
          - password_protected
        title:
          type:
          - string
          - 'null'
        spaMode:
          type: boolean
        moderationState:
          enum:
          - active
          - suspended
          - removed
        commentsEnabled:
          type: boolean
        lastActivityAt:
          type:
          - string
          - 'null'
          format: date-time
        expiresAt:
          type:
          - string
          - 'null'
          format: date-time
        coolingStartsAt:
          type:
          - string
          - 'null'
          format: date-time
        restoreUntil:
          type:
          - string
          - 'null'
          format: date-time
        restoreEligible:
          type:
          - boolean
          - 'null'
  parameters:
    ClientIdentity:
      name: X-Tempmd-Client
      in: header
      required: false
      description: Sanitized product/version identifier for operational attribution. Never include user data or capabilities.
      schema:
        type: string
        maxLength: 80
        pattern: ^[A-Za-z0-9][A-Za-z0-9._+/@-]{0,79}$
    TempId:
      name: tempId
      in: path
      required: true
      schema:
        type: string
  securitySchemes:
    tempCapability:
      type: http
      scheme: bearer
      bearerFormat: tempmd scoped capability
    publishSessionToken:
      type: http
      scheme: bearer
      bearerFormat: tempmd_upload session capability
    accountBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT or tempmd_key API key
externalDocs:
  description: temp.md documentation
  url: https://temp.md/docs