Emboss Proposals API

The Proposals API from Emboss — 6 operation(s) for proposals.

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /proposals/{proposal_id}/commit Commit a reviewed proposal into a filled PDF · Commit #
Ask an LLM
“How do I accept a proposal and render the final filled form?”
“Can I override some proposed values when committing?”
Tell an agent
Commit proposal {proposal_id}.
Commit proposal {proposal_id} with corrected values {values}.
GET /proposals/{proposal_id} Review a fill proposal · Get Proposal #
Ask an LLM
“What answers were proposed for my form before I commit?”
“Can an anonymous pay-door payer read their proposal with a token?”
Tell an agent
Show proposal {proposal_id}.
Let me review the proposed answers in {proposal_id}.
GET /proposals/{proposal_id}/receipt Get the receipt for a committed proposal · Receipt #
Ask an LLM
“Where do I get a receipt after committing a proposal?”
“What record is kept of a committed fill?”
Tell an agent
Get the receipt for proposal {proposal_id}.
Show what was committed for {proposal_id}.
GET /proposals/{proposal_id}/pdf Download the PDF from a committed proposal · Commit Pdf #
Ask an LLM
“Where do I download the filled PDF after committing a proposal?”
“Can I get the final document for a proposal I committed?”
Tell an agent
Download the committed PDF for proposal {proposal_id}.
Save the final filled form from {proposal_id}.
POST /proposals/{proposal_id}/attachments Attach a supporting file to a proposal · Add Attachment #
Ask an LLM
“Can I attach a supporting document to a proposal before committing?”
“How do I say which field or item an attachment is for?”
Tell an agent
Attach {file} to proposal {proposal_id}.
Add {file} to {proposal_id} as the attachment for {for}.
DELETE /proposals/{proposal_id}/attachments/{n} Remove an attachment from a proposal · Remove Attachment #
Ask an LLM
“How do I take an attachment back off a proposal?”
“Can I remove the wrong file I attached to a proposal?”
Tell an agent destructive · confirm first
Remove attachment {n} from proposal {proposal_id}.
Delete the attachment numbered {n} on {proposal_id}.

Documentation

Specifications

Other Resources

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/getemboss-ai:getemboss-ai-proposals-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

getemboss-ai-proposals-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Proposals API
  version: 0.1.0
security:
- bearer: []
- oauth2:
  - forms:read
  - forms:write
tags:
- name: Proposals
paths:
  /proposals/{proposal_id}/commit:
    post:
      summary: Commit
      operationId: commit_proposals__proposal_id__commit_post
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContextJobCreated'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $defs:
                CommitValue:
                  description: 'One caller decision. A null value SKIPS the field (a deliberate blank),

                    which is not the same as omitting it (leave whatever the proposal holds).'
                  properties:
                    field_id:
                      title: Field Id
                      type: integer
                    value:
                      title: Value
                    note:
                      anyOf:
                      - type: string
                      - type: 'null'
                      title: Note
                  required:
                  - field_id
                  title: CommitValue
                  type: object
              properties:
                values:
                  default: []
                  items:
                    $ref: '#/$defs/CommitValue'
                  title: Values
                  type: array
                confirm:
                  default: []
                  items:
                    type: integer
                  title: Confirm
                  type: array
                policy:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Policy
                idempotency_key:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Idempotency Key
                package:
                  default: false
                  title: Package
                  type: boolean
              title: CommitRequest
              type: object
      tags:
      - Proposals
  /proposals/{proposal_id}:
    get:
      summary: Get Proposal
      description: 'The proposal as its holder reads it. Lives here rather than in

        proposals.py because it shares this module''s auth rule exactly: the owner, or

        an anonymous pay-door payer holding a token minted for THIS proposal. That

        second case is why it cannot sit on the proposals router, which app.py mounts

        behind a blanket require_owner.


        A token-bearing read gets the token echoed back as commit_token, so the same

        response an owner reads carries, for a payer, the credential they commit with.

        An owner never sees the field: their API key already is their proof.'
      operationId: get_proposal_proposals__proposal_id__get
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProposalResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Proposals
  /proposals/{proposal_id}/receipt:
    get:
      summary: Receipt
      operationId: receipt_proposals__proposal_id__receipt_get
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Proposals
  /proposals/{proposal_id}/pdf:
    get:
      summary: Commit Pdf
      operationId: commit_pdf_proposals__proposal_id__pdf_get
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Proposals
  /proposals/{proposal_id}/attachments:
    post:
      summary: Add Attachment
      operationId: add_attachment_proposals__proposal_id__attachments_post
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_add_attachment_proposals__proposal_id__attachments_post'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Proposals
  /proposals/{proposal_id}/attachments/{n}:
    delete:
      summary: Remove Attachment
      operationId: remove_attachment_proposals__proposal_id__attachments__n__delete
      parameters:
      - name: proposal_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Proposal Id
      - name: n
        in: path
        required: true
        schema:
          type: integer
          title: N
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Proposals
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Body_add_attachment_proposals__proposal_id__attachments_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
        for:
          anyOf:
          - type: string
          - type: 'null'
          title: For
      type: object
      required:
      - file
      title: Body_add_attachment_proposals__proposal_id__attachments_post
    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
    ContextJobCreated:
      properties:
        job_id:
          type: string
          title: Job Id
        status:
          type: string
          title: Status
          default: processing
      type: object
      required:
      - job_id
      title: ContextJobCreated
    ProposalResponse:
      properties:
        proposal_id:
          type: string
          title: Proposal Id
        form_id:
          type: string
          title: Form Id
        status:
          type: string
          title: Status
        policy:
          type: string
          title: Policy
        mode:
          type: string
          title: Mode
        expires_at:
          type: string
          title: Expires At
        fields:
          items: {}
          type: array
          title: Fields
        questions:
          items: {}
          type: array
          title: Questions
        confirmations:
          items: {}
          type: array
          title: Confirmations
          default: []
        requirements:
          additionalProperties: true
          type: object
          title: Requirements
        attachments:
          items: {}
          type: array
          title: Attachments
          default: []
        summary:
          additionalProperties: true
          type: object
          title: Summary
        error:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Error
        commit_token:
          anyOf:
          - type: string
          - type: 'null'
          title: Commit Token
        package_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Package Url
      type: object
      required:
      - proposal_id
      - form_id
      - status
      - policy
      - mode
      - expires_at
      - fields
      - questions
      - requirements
      - summary
      title: ProposalResponse
      description: 'The agent-facing view of a proposal: per-field states with evidence, the

        questions still worth asking, what the form needs beyond values, and counts.'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: Emboss API key (sk_...)
      description: An Emboss API key. See https://getemboss.ai/docs/authentication.
    oauth2:
      type: oauth2
      description: Sign in with your Emboss account. See https://getemboss.ai/docs/authentication.
      flows:
        authorizationCode:
          authorizationUrl: https://api.getemboss.ai/oauth/authorize
          tokenUrl: https://api.getemboss.ai/oauth/token
          scopes:
            forms:read: Read your forms
            forms:write: Create and fill forms