Mesh Catalog Gas Sponsorship API

The CatalogGasSponsorship API from Mesh — 3 operation(s) for cataloggassponsorship.

Business capability
Blockchain & Digital Assets AE-240

Operations 3

POST /api/v1/sponsorship/build Build a sponsored transaction payload for the client to sign #
POST /api/v1/sponsorship/submit Submit a client-signed sponsored transaction for broadcast #
GET /api/v1/sponsorship/{trackingId} Get the current status of a sponsored transaction #

Specifications

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/mesh:mesh-cataloggassponsorship-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

mesh-cataloggassponsorship-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Mesh Connect Integration Catalog Gas Sponsorship API
  description: 'Mesh allows users to connect accounts of financial institutions,

    crypto exchanges, and self-custody wallets. Mesh handles credential

    validation, MFA, and error handling for each integration. After

    an account is connected, Mesh allows client applications to read holdings,

    transaction history and balances and execute crypto transfers (with user approval).'
  version: '1.0'
servers:
- url: https://integration-api.meshconnect.com
- url: https://sandbox-integration-api.meshconnect.com
security:
- Client-Secret: []
  Client-Id: []
tags:
- name: CatalogGasSponsorship
paths:
  /api/v1/sponsorship/build:
    post:
      tags:
      - CatalogGasSponsorship
      summary: Build a sponsored transaction payload for the client to sign
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/BuildSponsorshipRequestBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildSponsoredTxResponseApiResult'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema: {}
      operationId: postApiV1SponsorshipBuild
      x-operation-id-source: derived
  /api/v1/sponsorship/submit:
    post:
      tags:
      - CatalogGasSponsorship
      summary: Submit a client-signed sponsored transaction for broadcast
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SubmitSponsorshipRequestBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitSponsoredTxResponseApiResult'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema: {}
      operationId: postApiV1SponsorshipSubmit
      x-operation-id-source: derived
  /api/v1/sponsorship/{trackingId}:
    get:
      tags:
      - CatalogGasSponsorship
      summary: Get the current status of a sponsored transaction
      parameters:
      - name: trackingId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SponsoredTxStatusApiResult'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema: {}
      operationId: getApiV1SponsorshipByTrackingId
      x-operation-id-source: derived
components:
  schemas:
    SponsoredTxStatus:
      type: object
      properties:
        trackingId:
          type: string
          description: Ledger tracking id correlating the request to its persisted entry.
          format: uuid
        strategy:
          enum:
          - unknown
          - metaMaskGasIncluded
          - alchemySolanaFeePayer
          - relayLinkEvmFeeSponsor
          allOf:
          - $ref: '#/components/schemas/GasSponsorshipStrategyKind'
          description: Sponsorship strategy that produced this status.
        state:
          enum:
          - unknown
          - built
          - submitted
          - confirmed
          - failed
          - cancelled
          - refunded
          allOf:
          - $ref: '#/components/schemas/SponsoredTxState'
          description: Current lifecycle state of the sponsored transaction.
        txHash:
          type:
          - string
          - 'null'
          description: On-chain transaction hash for direct flows; null until known.
        confirmations:
          type: integer
          description: Number of on-chain confirmations observed for TxHash.
          format: int64
        error:
          allOf:
          - $ref: '#/components/schemas/SponsoredTxError'
          description: Failure details when State is Org.Front.Core.Contracts.GasSponsorship.SponsoredTxState.Failed.
        originTxHashes:
          type:
          - array
          - 'null'
          items:
            type: string
          description: "Origin-chain transaction hashes for routed flows (bridge/swap)\n            — populated from Relay's `inTxHashes`. Empty for `Direct` transfers, which keep\n            using TxHash."
        destinationTxHashes:
          type:
          - array
          - 'null'
          items:
            type: string
          description: "Destination-chain transaction hashes for routed flows —\n            populated from Relay's `txHashes`. Empty until Relay reports the destination fill."
      additionalProperties: false
      description: 'Output of `IRelaySponsorshipStrategy.GetStatusAsync`. Returned via

        `GET /v1/sponsorship/{trackingId}`.'
    SubmitStatus:
      enum:
      - unknown
      - submitted
      - alreadySubmitted
      type: string
      description: Result of broadcasting a sponsored transaction. Numeric values are part of the wire contract.
    SubmitSponsoredTxResponse:
      type: object
      properties:
        status:
          enum:
          - unknown
          - submitted
          - alreadySubmitted
          allOf:
          - $ref: '#/components/schemas/SubmitStatus'
          description: "Terminal status: Org.Front.Core.Contracts.GasSponsorship.SubmitStatus.Submitted on first success,\n            Org.Front.Core.Contracts.GasSponsorship.SubmitStatus.AlreadySubmitted when the same tracking id has already been\n            broadcast (idempotent replay)."
        txHash:
          type:
          - string
          - 'null'
          description: "On-chain transaction hash; present once broadcast succeeded. Nullable\n            to allow the idempotent Org.Front.Core.Contracts.GasSponsorship.SubmitStatus.AlreadySubmitted replay path to return a\n            minimal response when the persisted hash is not in the request scope."
      additionalProperties: false
      description: 'Output of `IRelaySponsorshipStrategy.SubmitAsync`. Returned via

        `POST /v1/sponsorship/submit`.'
    BuildSponsoredTxResponse:
      type: object
      properties:
        trackingId:
          type: string
          description: "Server-issued id correlating subsequent\n            `/submit` and `/status` calls back to a ledger entry. Surface this to clients."
          format: uuid
        strategy:
          enum:
          - unknown
          - metaMaskGasIncluded
          - alchemySolanaFeePayer
          - relayLinkEvmFeeSponsor
          allOf:
          - $ref: '#/components/schemas/GasSponsorshipStrategyKind'
          description: The strategy that built the payload.
        payload:
          allOf:
          - $ref: '#/components/schemas/SponsoredTxPayload'
          description: "Strategy-specific payload the client must sign and return on\n            `/submit`. For Alchemy on Solana this is a base64-encoded V0 transaction with slot 0\n            already signed by Alchemy and slot 1 awaiting the user's signature."
        additionalPayloads:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SponsoredTxPayload'
          description: "Additional payloads the client must sign in order when the\n            route requires multiple signatures (e.g., Permit2 + ERC-3009 authorize1). The FE prompts the\n            wallet for Payload first, then each entry here in order, then submits all\n            signatures together on `/submit` alongside `AdditionalSignedPayloads`. Null/empty\n            for routes that need a single signature (today: every direct ERC-3009 transfer and most\n            USDC same-chain swaps)."
      additionalProperties: false
      description: 'Output of `IRelaySponsorshipStrategy.BuildAsync`. Returned to the caller via the

        `POST /v1/sponsorship/build` response.'
    SponsoredTxError:
      type: object
      properties:
        code:
          type:
          - string
          - 'null'
        message:
          type:
          - string
          - 'null'
      additionalProperties: false
      description: Error envelope attached to Org.Front.Core.Contracts.GasSponsorship.SponsoredTxStatus when the transaction failed.
    ApiResultStatus:
      enum:
      - ok
      - serverFailure
      - permissionDenied
      - badRequest
      - notFound
      - conflict
      - tooManyRequest
      - locked
      - unavailableForLegalReasons
      type: string
    GasSponsorshipStrategyKind:
      enum:
      - unknown
      - metaMaskGasIncluded
      - alchemySolanaFeePayer
      - relayLinkEvmFeeSponsor
      type: string
      description: 'Identifies a concrete gas sponsorship strategy. Used as the keyed-services DI key for

        `IGasSponsorshipStrategy` registrations, persisted on

        `ClientGasSponsorshipPolicy.StrategyOrder`'
    SubmitSponsorshipRequestBody:
      type: object
      properties:
        trackingId:
          type: string
          format: uuid
        signedPayload:
          allOf:
          - $ref: '#/components/schemas/SubmitSponsorshipSignedPayload'
        additionalSignedPayloads:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SubmitSponsorshipSignedPayload'
          description: 'Additional client-signed payloads (in signing order) for routes that returned multiple

            payloads at `/build` time (e.g., Permit2 + ERC-3009 authorize1). Null/empty for

            single-signature routes.'
      additionalProperties: false
    SponsoredTxPayload:
      type: object
      properties:
        payloadType:
          type:
          - string
          - 'null'
          description: Wire-stable discriminator (e.g., `solana-v0-tx`).
        payloadBase64:
          type:
          - string
          - 'null'
          description: Base64-encoded serialized payload.
        slotsRemainingToSign:
          type:
          - array
          - 'null'
          items:
            type: integer
            format: int32
          description: "For multi-sig payloads, the signature slots the client\n            still owes. For Alchemy on Solana this is `[1]` (user signs slot 1; Alchemy already\n            signed slot 0). Empty for payloads that need no client signature."
      additionalProperties: false
      description: Strategy-specific payload returned by `/build` for the client to sign.
    SponsoredTxStatusApiResult:
      type: object
      properties:
        status:
          enum:
          - ok
          - serverFailure
          - permissionDenied
          - badRequest
          - notFound
          - conflict
          - tooManyRequest
          - locked
          - unavailableForLegalReasons
          allOf:
          - $ref: '#/components/schemas/ApiResultStatus'
          readOnly: true
        message:
          type:
          - string
          - 'null'
          description: A message generated by the API
        displayMessage:
          type:
          - string
          - 'null'
          description: User-friendly display message that can be presented to the end user
        errorHash:
          type:
          - string
          - 'null'
          description: An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping
          readOnly: true
        teamCode:
          type:
          - string
          - 'null'
          description: 'Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.

            Format: 2-character code (e.g., "7K", "M2"). Use for alerting/routing, not display.'
          readOnly: true
        errorType:
          type:
          - string
          - 'null'
          description: 'Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.

            All possible error types are available in the documentation.'
        errorData:
          readOnly: true
        content:
          allOf:
          - $ref: '#/components/schemas/SponsoredTxStatus'
          description: 'Output of `IRelaySponsorshipStrategy.GetStatusAsync`. Returned via

            `GET /v1/sponsorship/{trackingId}`.'
      additionalProperties: false
    BuildSponsoredTxResponseApiResult:
      type: object
      properties:
        status:
          enum:
          - ok
          - serverFailure
          - permissionDenied
          - badRequest
          - notFound
          - conflict
          - tooManyRequest
          - locked
          - unavailableForLegalReasons
          allOf:
          - $ref: '#/components/schemas/ApiResultStatus'
          readOnly: true
        message:
          type:
          - string
          - 'null'
          description: A message generated by the API
        displayMessage:
          type:
          - string
          - 'null'
          description: User-friendly display message that can be presented to the end user
        errorHash:
          type:
          - string
          - 'null'
          description: An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping
          readOnly: true
        teamCode:
          type:
          - string
          - 'null'
          description: 'Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.

            Format: 2-character code (e.g., "7K", "M2"). Use for alerting/routing, not display.'
          readOnly: true
        errorType:
          type:
          - string
          - 'null'
          description: 'Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.

            All possible error types are available in the documentation.'
        errorData:
          readOnly: true
        content:
          allOf:
          - $ref: '#/components/schemas/BuildSponsoredTxResponse'
          description: 'Output of `IRelaySponsorshipStrategy.BuildAsync`. Returned to the caller via the

            `POST /v1/sponsorship/build` response.'
      additionalProperties: false
    SponsoredTxState:
      enum:
      - unknown
      - built
      - submitted
      - confirmed
      - failed
      - cancelled
      - refunded
      type: string
      description: 'Lifecycle state of a `GasSponsorshipLedgerEntry`. Numeric values are part of the

        persistence + wire contract.'
    BuildSponsorshipRequestBody:
      type: object
      properties:
        transferPreviewId:
          type: string
          format: uuid
        fromAddress:
          type:
          - string
          - 'null'
      additionalProperties: false
    SubmitSponsorshipSignedPayload:
      type: object
      properties:
        payloadType:
          type:
          - string
          - 'null'
        signedPayloadBase64:
          type:
          - string
          - 'null'
      additionalProperties: false
    SubmitSponsoredTxResponseApiResult:
      type: object
      properties:
        status:
          enum:
          - ok
          - serverFailure
          - permissionDenied
          - badRequest
          - notFound
          - conflict
          - tooManyRequest
          - locked
          - unavailableForLegalReasons
          allOf:
          - $ref: '#/components/schemas/ApiResultStatus'
          readOnly: true
        message:
          type:
          - string
          - 'null'
          description: A message generated by the API
        displayMessage:
          type:
          - string
          - 'null'
          description: User-friendly display message that can be presented to the end user
        errorHash:
          type:
          - string
          - 'null'
          description: An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping
          readOnly: true
        teamCode:
          type:
          - string
          - 'null'
          description: 'Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.

            Format: 2-character code (e.g., "7K", "M2"). Use for alerting/routing, not display.'
          readOnly: true
        errorType:
          type:
          - string
          - 'null'
          description: 'Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.

            All possible error types are available in the documentation.'
        errorData:
          readOnly: true
        content:
          allOf:
          - $ref: '#/components/schemas/SubmitSponsoredTxResponse'
          description: 'Output of `IRelaySponsorshipStrategy.SubmitAsync`. Returned via

            `POST /v1/sponsorship/submit`.'
      additionalProperties: false
  securitySchemes:
    Client-Secret:
      type: apiKey
      description: Contact Mesh to get client Secret
      name: X-Client-Secret
      in: header
    Client-Id:
      type: apiKey
      description: Contact Mesh to get client Id
      name: X-Client-Id
      in: header