Emboss Pay API

The Pay API from Emboss — 7 operation(s) for pay.

Operations 7

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

GET /pay List the paid operations and their docs · Pay Index #
Ask an LLM
“Which pay-per-use operations are available and where are their docs?”
“Is there a discovery index an agent can read for the paid door?”
Tell an agent
Show the index of paid operations.
List every pay-per-use op with a link to its docs.
GET /pay/openapi.json Get the pay manifest at its legacy /pay path · Pay Openapi Manifest #
Ask an LLM
“Does the older /pay/openapi.json link still serve the pay manifest?”
“Can I fetch the MPP manifest from under the /pay path instead of the root?”
Tell an agent
Fetch the pay manifest from the /pay/openapi.json alias.
Download the legacy-path copy of the pay-per-use OpenAPI manifest.
GET /pay/llms.txt Get the llms.txt for the pay door · Pay Llms Txt #
Ask an LLM
“Is there an llms.txt that tells agents the starting prices for paid ops?”
“Where can an LLM read a short summary of the pay-per-use door?”
Tell an agent
Fetch the pay door llms.txt.
Read the agent-facing llms.txt with from-prices and links.
GET /pay/pricing Get the public price list under /pay · Pay Pricing Alias #
Ask an LLM
“What does each pay-per-use operation cost, listed next to the quote endpoint?”
“Is the /pay/pricing list the same as the main price list?”
Tell an agent
Show the price list at /pay/pricing.
Get the pay door's public prices.
POST /pay/quote Inspect a PDF's exact price before paying · Pay Quote #
Ask an LLM
“How many pages does my PDF have and is it already fillable, before I pay?”
“Is the pay quote throttled per IP address?”
Tell an agent
Inspect {file} and quote the price of every op.
Quote a structured fill of {file} with values {values}.
POST /pay/{op} Pay for and run a named PDF operation · Pay #
Ask an LLM
“How do I pay for and run one operation, like fill or fax, by its name?”
“What error format comes back when a paid operation is rejected?”
Tell an agent
Pay for and run op {op} on {file}.
Run paid op {op} on {file} with values {values}.
GET /pay/jobs/{job_id} Poll a paid job's status for free · Pay Job Status #
Ask an LLM
“How do I check on a paid job without paying again or having an account?”
“Which token do I need to poll a pay-door job?”
Tell an agent
Poll paid job {job_id} with token {token}.
Check whether pay-door job {job_id} has finished.

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-pay-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-pay-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Pay API
  version: 0.1.0
security:
- bearer: []
- oauth2:
  - forms:read
  - forms:write
tags:
- name: Pay
paths:
  /pay:
    get:
      summary: Pay Index
      description: 'A small JSON index of the paid ops and their docs -- a discovery

        anchor for mppx validate and curious agents, per the design doc''s

        Discovery section.'
      operationId: pay_index_pay_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security: []
      tags:
      - Pay
  /pay/openapi.json:
    get:
      summary: Pay Openapi Manifest
      description: 'The MPP pay manifest (MPPscan shape) at the origin ROOT, which is the

        only location discovery tools read; /pay/openapi.json is an alias kept for

        links already published. FastAPI''s own schema is at /internal/openapi.json.

        Imported lazily: pay_manifest reads _OPS_INDEX from here.'
      operationId: pay_openapi_manifest_pay_openapi_json_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security: []
      tags:
      - Pay
  /pay/llms.txt:
    get:
      summary: Pay Llms Txt
      description: Floor-plus-pointer llms.txt for the pay door (from-prices + links).
      operationId: pay_llms_txt_pay_llms_txt_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security: []
      tags:
      - Pay
  /pay/pricing:
    get:
      summary: Pay Pricing Alias
      description: The public price list beside /pay/quote; same body as GET /pricing.
      operationId: pay_pricing_alias_pay_pricing_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security: []
      tags:
      - Pay
  /pay/quote:
    post:
      summary: Pay Quote
      description: 'Free, stateless inspect-before-pay: page count, whether the PDF is

        already fillable, and the exact price of every op for THIS PDF, computed

        with the same engine function the 402 uses. No quote row, no staging.

        Shares the per-IP quote throttle with the 402 path.'
      operationId: pay_quote_pay_quote_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_pay_quote_pay_quote_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: []
      tags:
      - Pay
  /pay/{op}:
    post:
      summary: Pay
      description: 'Thin wrapper: catches ANY HTTPException raised anywhere in this

        door''s call graph (quotes.claim_quote''s 404/409/410, quotes.execute_quote''s

        post-settle failure re-raise, auth.enforce_throttle''s 429, this module''s

        own op-name 404) and normalizes it to the SAME Problem Details shape

        every other rejection on this door already returns, rather than letting

        it escape as FastAPI''s default {"detail": ...} JSON body -- see

        _http_exception_to_problem''s own docstring (Fix round 1). A JSON content

        type takes the pay_body branch; multipart is unchanged.'
      operationId: pay_pay__op__post
      parameters:
      - name: op
        in: path
        required: true
        schema:
          type: string
          title: Op
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_pay_pay__op__post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: []
      tags:
      - Pay
  /pay/jobs/{job_id}:
    get:
      summary: Pay Job Status
      description: 'Free poll: token = HMAC(job_id, server secret) minted in the 202. No

        payment, no auth account -- per the design doc''s retry step 6. Every

        rejection here also normalizes through _http_exception_to_problem (Fix

        round 1), for the same consistency reason as pay()''s own wrapper --

        Problem Details across the whole /pay* surface, not just POST /pay/{op}.'
      operationId: pay_job_status_pay_jobs__job_id__get
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: []
      tags:
      - Pay
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
    Body_pay_quote_pay_quote_post:
      properties:
        file:
          anyOf:
          - type: string
            contentMediaType: application/octet-stream
          - type: 'null'
          title: File
        context:
          items:
            type: string
            contentMediaType: application/octet-stream
          type: array
          title: Context
          default: []
        context_text:
          anyOf:
          - type: string
          - type: 'null'
          title: Context Text
        context_urls:
          items:
            type: string
          type: array
          title: Context Urls
          default: []
        values:
          anyOf:
          - type: string
          - type: 'null'
          title: Values
      type: object
      title: Body_pay_quote_pay_quote_post
    Body_pay_pay__op__post:
      properties:
        file:
          anyOf:
          - type: string
            contentMediaType: application/octet-stream
          - type: 'null'
          title: File
        context:
          items:
            type: string
            contentMediaType: application/octet-stream
          type: array
          title: Context
          default: []
        context_text:
          anyOf:
          - type: string
          - type: 'null'
          title: Context Text
        context_urls:
          items:
            type: string
          type: array
          title: Context Urls
          default: []
        values:
          anyOf:
          - type: string
          - type: 'null'
          title: Values
        policy:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy
        mode:
          anyOf:
          - type: string
          - type: 'null'
          title: Mode
        package:
          anyOf:
          - type: string
          - type: 'null'
          title: Package
        to:
          anyOf:
          - type: string
          - type: 'null'
          title: To
      type: object
      title: Body_pay_pay__op__post
  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