Tinvio Capsule Recipes API
Discover, preview, trigger, and recover IFRS capsule recipes. Trigger a recipe by attaching it to a base transaction (invoice, bill, journal, or cash entry), then poll the resulting job with Search Background Jobs.
Discover, preview, trigger, and recover IFRS capsule recipes. Trigger a recipe by attaching it to a base transaction (invoice, bill, journal, or cash entry), then poll the resulting job with Search Background Jobs.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/tinvio-com:tinvio-com-capsule-recipes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Tinvio Com Capsule Recipes API
version: '1.0'
contact:
email: build.with@jaz.ai
name: API Support
url: https://jaz.ai
description: 'Operations tagged Capsule Recipes across 2 of this provider''s published API definitions: tinvio-com-openapi-original.yaml, tinvio-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.getjaz.com
tags:
- description: Discover, preview, trigger, and recover IFRS capsule recipes. Trigger a recipe by attaching it to a base transaction (invoice, bill, journal, or cash entry), then poll the resulting job with Search Background Jobs.
name: Capsule Recipes
paths:
/api/v1/capsule-recipes:
get:
description: List all registered IFRS capsule recipes with their per-version input JSON Schemas.
operationId: list-capsule-recipes
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- properties:
data:
items:
$ref: '#/components/schemas/CapsuleRecipeDescriptor'
type: array
type: object
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: List Capsule Recipes
tags:
- Capsule Recipes
servers:
- url: https://api.getjaz.com
/api/v1/capsule-recipes/preview:
post:
description: Preview the blueprint a capsule recipe would build for the given inputs without persisting anything. Optionally supply the base transaction triplet (baseTransactionResourceId, baseTransactionType, organizationResourceId) to auto-fill totalAmount, currency, and anchor dates from the base transaction.
operationId: create-capsule-recipe-preview
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- properties:
data:
$ref: '#/components/schemas/CapsuleRecipeBlueprint'
type: object
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Preview Capsule Recipe
tags:
- Capsule Recipes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PreviewCapsuleRecipeClientRequest'
description: The preview request request.
required: true
servers:
- url: https://api.getjaz.com
/api/v1/capsule-recipes/resume/{capsuleResourceId}:
post:
description: Resume a FAILED recipe job from the leg that failed. After 3 same-leg failures the job is terminally marked FAILED.
operationId: create-capsule-recipe-resume
parameters:
- description: Resource ID of the capsule, from the original trigger's capsuleRecipeJob.capsuleResourceId.
in: path
name: capsuleResourceId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- properties:
data:
$ref: '#/components/schemas/CapsuleRecipeJobResponse'
type: object
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Resume Capsule Recipe Job
tags:
- Capsule Recipes
servers:
- url: https://api.getjaz.com
/api/v1/capsule-recipes/rollback/{capsuleResourceId}:
post:
description: Delete every scheduler atom posted by this capsule's recipe. Does not delete the capsule entity itself. Pass dryRun=true to preview impact without deleting.
operationId: create-capsule-recipe-rollback
parameters:
- description: Resource ID of the capsule, from the original trigger's capsuleRecipeJob.capsuleResourceId.
in: path
name: capsuleResourceId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- properties:
data:
$ref: '#/components/schemas/RollbackCapsuleRecipeResult'
type: object
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Roll Back Capsule Recipe
tags:
- Capsule Recipes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RollbackCapsuleRecipeClientRequest'
description: Optional rollback options (dryRun).
servers:
- url: https://api.getjaz.com
/api/v1/capsule-recipes/{name}:
get:
description: Get one capsule recipe descriptor by enum name. Unknown names return 404.
operationId: get-capsule-recipe
parameters:
- description: Name of the recipe.
in: path
name: name
required: true
schema:
type: string
enum:
- LOAN_AMORTIZATION
- ACCRUAL_REVERSAL
- PREPAID_AMORTIZATION
- DEFERRED_REVENUE
- IFRS16_LEASE
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BaseResponse'
- properties:
data:
$ref: '#/components/schemas/CapsuleRecipeDescriptor'
type: object
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Get Capsule Recipe
tags:
- Capsule Recipes
servers:
- url: https://api.getjaz.com
components:
schemas:
ErrorResponse:
properties:
error:
allOf:
- $ref: '#/components/schemas/ErrorResponseData'
description: Error details.
type: object
BaseResponse:
properties:
data:
description: The response object.
type: object
CapsuleRecipeBlueprintRun:
properties:
rollingBalance:
description: Rolling balance after this occurrence (cumulative across the leg). Nullable for legs that don't track balance.
type: number
runOrdinal:
description: 1-based occurrence ordinal within the leg.
type: integer
valueDate:
description: Run date, in YYYY-MM-DD format.
example: '2026-06-15'
type: string
type: object
CapsuleRecipeDescriptor:
properties:
allowedBaseTransactionTypes:
description: Base-transaction types the recipe can attach to (SALE, PURCHASE, JOURNAL_MANUAL, JOURNAL_DIRECT_CASH_IN, JOURNAL_DIRECT_CASH_OUT, JOURNAL_CASHFLOW).
items:
type: string
type: array
capsuleType:
description: Capsule type the recipe builds (links to c_system_capsule_types row).
example: LOAN
type: string
defaultVersion:
description: Default version used when the partner does not pin one explicitly.
example: 2
type: integer
description:
description: Long-form recipe semantics with IFRS/IAS references for AI agents / docs surfaces.
type: string
displayName:
description: Short, user-facing display name (e.g. "Loan Amortization").
example: Loan Amortization
type: string
expectedAtomTypes:
description: Atom types the engine creates per leg (JOURNAL_SCHEDULER for all v1 recipes).
items:
type: string
type: array
name:
description: Recipe enum name. One of LOAN_AMORTIZATION, ACCRUAL_REVERSAL, PREPAID_AMORTIZATION, DEFERRED_REVENUE, IFRS16_LEASE.
example: LOAN_AMORTIZATION
type: string
requiresBaseTransaction:
description: Whether the recipe requires a base transaction to attach to. Always true in v1.
example: true
type: boolean
shortDescription:
description: Subtext for the partner recipe-picker (one sentence).
example: Amortize a loan over its term.
type: string
versions:
description: Available recipe versions. Older capsules keep their pinned version.
items:
$ref: '#/components/schemas/CapsuleRecipeVersion'
type: array
type: object
CapsuleRecipeVersion:
properties:
exampleInputs:
description: Optional canonical example payload showing a valid `inputs` object.
type: object
inputSchema:
description: JSON Schema Draft 7 describing the `inputs` shape for this recipe version.
type: object
status:
description: 'Version status: ACTIVE | DEPRECATED.'
example: ACTIVE
type: string
templateSlots:
description: Customizable string slots the recipe engine emits (title, schedule descriptions, posts labels, line memos, scheduler reference). Drives the Customize Recipe panel. Empty when a recipe has no customization.
items:
$ref: '#/components/schemas/TemplateSlot'
type: array
version:
description: Version number. Bumps on input-schema changes; older versions stay registered for in-flight capsules.
example: 2
type: integer
type: object
TemplateSlot:
properties:
category:
description: 'UI grouping hint: CAPSULE | LEG | LINE | SCHEDULER.'
type: string
defaultTemplate:
description: What the engine emits when no override is supplied. Contains `{{variable}}` tokens that resolve from the recipe input + computed schedule data.
type: string
description:
description: Optional tooltip / help copy explaining what this slot is and where its value surfaces.
type: string
groupDescription:
description: 'Optional firing-pattern subtitle on the accordion header. Example: "recurring, per period".'
type: string
groupKey:
description: Sub-group identifier within the recipe. Slots sharing a `groupKey` render in the same accordion section. Null when the recipe renders flat.
type: string
groupLabel:
description: 'Accordion header title shown above the grouped slots. Example: "Lease recognition".'
type: string
nullable:
description: True when the user can remove the slot (engine emits blank). False for structural slots (e.g. capsule title).
type: boolean
slotKey:
description: 'Stable wire key for template overrides on the trigger payload. Examples: `capsule.title`, `leg.description.payment`, `line.description.principal`, `scheduler.reference`.'
type: string
supportedVariables:
description: Variable names allowed inside this slot's template (without braces). Validator rejects any `{{var}}` not in this list.
items:
type: string
type: array
uiLabel:
description: Human-readable label shown above the editor in the Customize Recipe panel.
type: string
visibilityCondition:
allOf:
- $ref: '#/components/schemas/SlotVisibilityCondition'
description: Optional conditional-visibility rule. When set, the Customize Recipe panel shows this slot only when the named recipe input fields satisfy the operator; null means always visible. Used by Prepaid/Deferred to toggle the straight-line vs pro-rata variant slots based on whether both coverage dates are set.
type: object
RollbackCapsuleRecipeResult:
properties:
blockedAtomResourceIds:
description: Scheduler-atom resourceIds whose delete was rejected (typically reconciled to a bank-statement entry). Un-reconcile before retrying.
items:
type: string
type: array
capsuleResourceId:
description: Capsule the rollback targeted.
type: string
deletedAtomResourceIds:
description: Scheduler-atom resourceIds successfully deleted (or, on DRY_RUN, candidates that would be deleted).
items:
type: string
type: array
status:
description: Rollback outcome.
enum:
- SUCCESS
- BLOCKED
- PARTIAL_ROLLBACK
- DRY_RUN
type: string
terminalReason:
description: Job terminal reason after rollback. Set to USER_ROLLED_BACK on SUCCESS; null on BLOCKED / PARTIAL_ROLLBACK / DRY_RUN.
type: string
type: object
CapsuleRecipeBlueprint:
properties:
capsuleDescription:
description: Optional human-readable capsule description.
type: string
capsuleTitle:
description: Capsule title that will be used when the recipe triggers (e.g. "Loan <reference>").
example: Loan REF-001
type: string
capsuleType:
description: Capsule type the recipe builds.
type: string
computedVariables:
description: Recipe-specific computed values for the Customize Recipe preview. Resolves `{{var}}` tokens that aren't form inputs (totalInterest, presentValue, totalDays, etc.). Per-recipe keys vary.
type: object
currency:
description: Currency code (ISO 4217) for all amounts in this blueprint.
example: SGD
type: string
expectedOutput:
description: Flattened, date-sorted journal postings across all legs. Display-only; `legs` is the source of truth.
items:
$ref: '#/components/schemas/CapsuleRecipeExpectedEntry'
type: array
finalPeriodAdjustment:
description: Adjustment applied to the final period to absorb rounding drift. Zero for variable-amount recipes.
type: number
grandTotal:
description: Total amount across all blueprint runs.
type: number
legs:
description: Scheduler atoms the engine creates. One per leg.
items:
$ref: '#/components/schemas/CapsuleRecipeBlueprintLeg'
type: array
perPeriodAmount:
description: Per-period amount for constant-amount recipes (null for variable-amount recipes like loan repayments / IFRS 16 unwinding).
type: number
previewMarkdown:
description: Pre-rendered Markdown for a one-click human-readable preview.
type: string
recipeName:
description: Recipe enum name.
type: string
recipeVersion:
description: Version pinned for this preview.
type: integer
warnings:
description: Engine warnings (e.g. pro-rata N-1 distribution flagged).
items:
type: string
type: array
type: object
CapsuleRecipeExpectedEntry:
properties:
atomType:
description: Atom type. JOURNAL_SCHEDULER for all v1 recipes.
type: string
description:
description: Optional long-form entry description.
type: string
legOrdinal:
description: Owning leg ordinal.
type: integer
lines:
description: Per-line debit/credit postings.
items:
$ref: '#/components/schemas/CapsuleRecipeBlueprintLine'
type: array
rollingBalance:
description: Rolling balance after this entry. Nullable for recipes that don't track balance.
type: number
runOrdinal:
description: Owning leg's run ordinal that this entry represents.
type: integer
valueDate:
description: Run date, in YYYY-MM-DD format.
example: '2026-06-15'
type: string
type: object
SlotVisibilityCondition:
properties:
dependsOn:
description: Recipe input field keys whose presence/absence the rule tests (e.g. coverageStartDate, coverageEndDate). These are input-schema field names, not template variable tokens.
items:
type: string
type: array
operator:
description: How dependsOn is evaluated. ALL_PRESENT shows the slot when every field is filled; NONE_PRESENT when none are; ANY_PRESENT when at least one is.
enum:
- ALL_PRESENT
- ANY_PRESENT
- NONE_PRESENT
type: string
type: object
CapsuleRecipeBlueprintLeg:
properties:
atomType:
description: Atom type. JOURNAL_SCHEDULER for all v1 recipes.
example: JOURNAL_SCHEDULER
type: string
description:
description: Optional long-form leg description.
type: string
firstDate:
description: First run date, in YYYY-MM-DD format.
example: '2026-06-15'
type: string
frequency:
description: MONTHLY | QUARTERLY | YEARLY. Null for ONE_TIME.
enum:
- MONTHLY
- QUARTERLY
- YEARLY
type: string
lastDate:
description: Last run date, in YYYY-MM-DD format. Equals firstDate for ONE_TIME.
example: '2027-05-15'
type: string
legRangeLabel:
description: 'Period label for numbered ONE_TIME legs (for example "3/12" for the third of twelve lease payments).
Null on legs that don''t carry a period number (recognition, RECURRING straight-line, NC→Current reclass, etc.).
Lets a client render a collapsed "payment 3/12 to 12/12" range row without parsing the description.'
example: 3/12
type: string
occurrences:
description: Number of occurrences (== 1 for ONE_TIME).
type: integer
ordinal:
description: 1-based leg ordinal within the blueprint.
type: integer
postsLabel:
description: Recipe-specific short action label per leg, e.g. "Revenue recognition", "Loan repayment", "ROU depreciation".
example: Loan repayment
type: string
runs:
description: Per-occurrence expansion. Size equals `occurrences`.
items:
$ref: '#/components/schemas/CapsuleRecipeBlueprintRun'
type: array
scheduleKind:
description: ONE_TIME | RECURRING.
enum:
- ONE_TIME
- RECURRING
example: RECURRING
type: string
templateLines:
description: Template journal lines posted on each occurrence.
items:
$ref: '#/components/schemas/CapsuleRecipeBlueprintLine'
type: array
type: object
RollbackCapsuleRecipeClientRequest:
properties:
dryRun:
description: When true, return the would-delete list without actually deleting anything.
example: true
type: boolean
type: object
TemplateOverrideClientRequest:
properties:
slotKey:
description: Stable wire key identifying which slot to override (e.g. `capsule.title`, `leg.description.payment`, `scheduler.reference`). Must appear in the recipe's templateSlots[].
maxLength: 128
type: string
template:
description: User-supplied template string with `{{variable}}` tokens. Max 2000 chars. Null or empty removes a nullable slot.
maxLength: 2000
type: string
required:
- slotKey
type: object
CapsuleRecipeBlueprintLine:
properties:
accountResourceId:
description: Chart-of-accounts resourceId that the line posts to.
type: string
credit:
description: Credit amount. One of debit / credit will be 0.
type: number
debit:
description: Debit amount. One of debit / credit will be 0.
type: number
description:
description: Optional line-level description.
type: string
type: object
PreviewCapsuleRecipeClientRequest:
properties:
baseTransactionResourceId:
description: Optional base transaction resourceId. Supply with baseTransactionType and organizationResourceId to auto-fill totalAmount, currency, and anchor dates from the base transaction. All three triplet fields are required together.
type: string
baseTransactionType:
description: Base transaction type. Required when either of the other two triplet fields is supplied.
enum:
- SALE
- PURCHASE
- JOURNAL_MANUAL
- JOURNAL_DIRECT_CASH_IN
- JOURNAL_DIRECT_CASH_OUT
- JOURNAL_CASHFLOW
type: string
inputs:
description: Recipe inputs object. Per-recipe shape, see the `inputSchema` field on GET /api/v1/capsule-recipes. Must be non-null.
type: object
organizationResourceId:
description: Owning organization. Required when either of the other two triplet fields is supplied.
type: string
recipeName:
description: Recipe enum name to preview. Must be one of the allowed values. Unknown values return 422.
enum:
- LOAN_AMORTIZATION
- ACCRUAL_REVERSAL
- PREPAID_AMORTIZATION
- DEFERRED_REVENUE
- IFRS16_LEASE
type: string
recipeVersion:
description: Optional version pin. Omit to use the latest registered version.
minimum: 1
type: integer
templateOverrides:
description: Customize Recipe overrides to apply at preview render time. Send only the slots the user touched. Server validates each slotKey is registered for the recipe and every `{{var}}` token is in the slot's supportedVariables palette; first failure returns 422 with an ERR_RECIPE_OVERRIDE_* code so the panel can highlight the offending slot.
items:
$ref: '#/components/schemas/TemplateOverrideClientRequest'
type: array
required:
- inputs
- recipeName
type: object
CapsuleRecipeJobResponse:
properties:
baseTransactionResourceId:
description: Base transaction that triggered the recipe.
type: string
baseTransactionType:
description: Type of the transaction the recipe was triggered from.
type: string
capsuleResourceId:
description: Capsule the job builds. Nullable until intake completes.
type: string
createdAt:
description: Created at (epoch ms).
type: integer
errorReason:
description: Engine-supplied human-readable error reason on the failed leg.
type: string
failedAtLeg:
description: 1-based leg ordinal that last failed (nullable).
type: integer
failedCount:
description: Number of atoms that failed so far.
type: integer
organizationResourceId:
description: Owning organization.
type: string
processedCount:
description: Number of atoms successfully posted so far.
type: integer
recipeKey:
description: 'Grouping key: "<baseTransactionType>_<recipeName>".'
type: string
recipeName:
description: Recipe enum name. Nullable when the request_payload row is corrupt.
type: string
recipeVersion:
description: Version pinned for this job.
type: integer
replacesJobId:
description: Predecessor FAILED job that this one replaces (nullable).
type: string
resourceId:
description: Background job resourceId.
type: string
resumeAttempts:
description: Number of times this job has been resumed (max 3 before BLOCKED_AFTER_3_RESUME_ATTEMPTS).
type: integer
status:
description: 'Job status: QUEUED | PROCESSING | SUCCESS | FAILED | PARTIAL_SUCCESS.'
enum:
- QUEUED
- PROCESSING
- SUCCESS
- FAILED
- PARTIAL_SUCCESS
type: string
subscriptionFBPath:
description: Firestore subscription path for the job tracking doc.
type: string
terminalReason:
description: 'Terminal reason on FAILED jobs: USER_ROLLED_BACK | BLOCKED_AFTER_3_RESUME_ATTEMPTS | DLQ_POISON_EVENT | ATOM_VALIDATION_FAILED_LEG_N | AUTO_ROLLED_BACK. Null on non-terminal jobs.'
type: string
totalRecords:
description: Total scheduler atoms (= blueprint leg count).
type: integer
updatedAt:
description: Updated at (epoch ms).
type: integer
type: object
ErrorResponseData:
properties:
error_type:
description: Error category, for example validation_error, invalid_request_body, or internal_server_error.
example: validation_error
type: string
errors:
description: Error messages describing what went wrong.
items:
type: string
type: array
type: object
securitySchemes:
ApiKeyAuth:
description: Organization API key. Pass it in the x-jk-api-key header on every request.
in: header
name: x-jk-api-key
type: apiKey
x-refined-from:
- tinvio-com-openapi-original.yaml
- tinvio-com-openapi.yml