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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/gingr:gingr-payment-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
openapi: 3.2.0
info:
title: Gingr Payment API
description: 'Welcome to the **Gingr API** — a RESTful JSON:API-compliant interface for integrating with Gingr, the leading pet-care business management platform.
## Authentication
All requests require an API key passed in the `X-Api-Key` header. Keys are scoped to a specific organization and can be generated from the Gingr admin dashboard under **Settings → Integrations → API Keys**.
## Subdomain Header
Every request must also include a `subdomain` header identifying which Gingr account you are operating on. This value is the subdomain portion of your Gingr URL (e.g., `mykennel` for `mykennel.gingrapp.com`).
## Response Format
The API follows the JSON:API v1.0 specification. All requests must include:
```
Accept: application/vnd.api+json
```
POST/PUT/PATCH requests that include a body must also include:
```
Content-Type: application/vnd.api+json
```
Paginated list responses include a `meta` object with `currentPage`, `lastPage`, `perPage`, and `total`, as well as a `links` object with `first`, `last`, `prev`, and `next` cursor URLs.
## Error Handling
| HTTP Status | Meaning |
|-------------|---------|
| 200 | Success |
| 201 | Resource created |
| 400 | Bad request / business logic error |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — valid key but insufficient permissions |
| 404 | Resource not found |
| 422 | Validation error — see `errors` array in response |
| 500 | Internal server error |
Validation errors (`422`) are returned as a JSON:API `errors` array where each item contains a `title` and a `detail` describing the offending field.
## Rate Limiting
API requests are subject to rate limiting. Exceeding the limit returns a `429 Too Many Requests` response. Contact Gingr support to discuss higher rate limits for high-volume integrations.'
version: 1.9.2
tags:
- name: Payment
description: Payment
paths:
/v1/payments/charge:
post:
tags:
- Payment
summary: Payment - Charge
description: Process payment charge for products. The product parameter in the API is used as a product reference to prevent unauthorized or incorrect charge amounts and enhance security. It does not represent an actual product purchase; it is only used to process a charge through the specified payment processor.
operationId: PaymentCharge
parameters:
- name: subdomain
in: header
description: Organization subdomain identifier
required: true
schema:
type: string
example: donny
- name: Accept
in: header
description: Content type acceptance header
required: true
schema:
type: string
example: application/vnd.api+json
- name: Content-Type
in: header
description: Content type acceptance header
required: true
schema:
type: string
example: application/vnd.api+json
requestBody:
required: true
content:
application/vnd.api+json:
schema:
properties:
data:
properties:
type:
description: JSON:API resource type identifier
type: string
example: charge
attributes:
description: Payment charge attributes
required:
- locationId
- parentId
- paymentProcessor
- amount
- products
properties:
locationId:
description: Location ID (should be valid active location ID)
type: integer
example: 1
parentId:
description: Parent ID (should be valid ID)
type: integer
example: 1
paymentProcessor:
description: 'Payment processor (allowed: cardconnect, gingrpayments)'
type: string
enum:
- cardconnect
- gingrpayments
example: gingrpayments
cardId:
description: Optional. Card ID or payment method ID
type: string
example: pm_1234567890
amount:
description: Payment amount (must be valid amount format)
type: number
format: float
example: 25.99
products:
description: Products to charge for (minimum 1 item). This parameter is used as a product reference to prevent unauthorized or incorrect charge amounts and enhance security. It does not represent an actual product purchase; it is only used to process a charge through the specified payment processor.
type: array
items:
properties:
type:
description: 'Product type (allowed: bookingType, POSItem, OpenLineItem, package, subscription, service, membership, storeCredit, deposit, invoice)'
type: string
enum:
- bookingType
- POSItem
- openLineItem
- package
- subscription
- service
- membership
- storeCredit
- deposit
- invoice
example: POSItem
id:
description: Product ID (should be valid ID for the specified type)
type: integer
example: 1
type: object
example:
- type: POSItem
id: 1
type: object
type: object
type: object
responses:
'200':
description: Successful payment charge
content:
application/vnd.api+json:
schema:
properties:
jsonapi:
description: JSON:API version information
properties:
version:
description: JSON:API specification version in use
type: string
example: '1.0'
type: object
data:
description: Charge resource object
properties:
type:
description: JSON:API resource type identifier
type: string
example: charge
id:
description: Unique identifier of the charge transaction
type: integer
example: 166
attributes:
description: Payment transaction attributes
properties:
retref:
description: Reference ID (CardConnect only)
type: string
example: null
transactionId:
description: Transaction ID
type: integer
example: 166
authCode:
description: Authorization code (CardConnect only)
type: string
example: null
type: object
type: object
meta:
description: Response metadata
properties:
message:
description: Human-readable status message
type: string
example: Payment charged successfully
type: object
type: object
'422':
$ref: '#/components/responses/ValidationResponse'
'400':
description: Bad request - invalid input
content:
application/json:
schema:
type: object
example:
errors:
- status: 400
title: Bad Request
detail: This payment processor is either inactive or not configured for the selected location.
security:
- XApiKey: []
/v1/payments/void-items:
post:
tags:
- Payment
summary: Payment - Void Items
description: Void one or more invoice line items for non-deposit payments. Items are soft-voided and invoice totals are recalculated.
operationId: PaymentVoidItems
parameters:
- name: subdomain
in: header
description: Organization subdomain identifier
required: true
schema:
type: string
example: donny
- name: Accept
in: header
description: Content type acceptance header
required: true
schema:
type: string
example: application/vnd.api+json
- name: Content-Type
in: header
description: Content type acceptance header
required: true
schema:
type: string
example: application/vnd.api+json
requestBody:
required: true
content:
application/vnd.api+json:
schema:
properties:
data:
properties:
type:
type: string
example: void-items
attributes:
required:
- invoiceId
- itemIds
- reason
properties:
invoiceId:
description: Invoice ID (should be valid invoice ID with no active deposits)
type: integer
example: 12345
itemIds:
description: Array of invoice line item IDs to void (minimum 1 item)
type: array
items:
type: integer
example: 101
minItems: 1
example:
- 101
- 102
- 103
reason:
description: Reason for voiding (max 500 characters)
type: string
maxLength: 500
example: Customer requested correction
type: object
type: object
type: object
responses:
'200':
description: Successful response with void results
content:
application/vnd.api+json:
schema:
properties:
jsonapi:
properties:
version:
type: string
example: '1.0'
type: object
data:
properties:
type:
type: string
example: void-items
id:
type: integer
example: 12345
attributes:
properties:
invoiceId:
type: integer
example: 12345
voidedItemIds:
type: array
items:
type: integer
example:
- 101
- 102
- 103
errors:
type: array
items:
properties:
itemId:
type: integer
example: 104
message:
type: string
example: This package has already been used and cannot be voided.
type: object
example: []
type: object
type: object
meta:
properties:
message:
type: string
example: Items voided successfully.
type: object
type: object
'422':
$ref: '#/components/responses/ValidationResponse'
security:
- XApiKey: []
components:
responses:
ValidationResponse:
description: Validation error response
content:
application/vnd.api+json:
schema:
properties:
errors:
type: array
items:
properties:
status:
type: integer
example: 422
source:
properties:
pointer:
type: string
example: field
type: object
title:
type: string
example: Invalid Data Parameter
detail:
type: string
example: The field must be valid.
type: object
type: object
securitySchemes:
XApiKey:
type: apiKey
description: Handle an incoming request.
name: X-Api-Key
in: header
x-provenance:
method: harvested
publisher: Gingr
source: https://docs.gingr.io/documentation/swagger.json?1792427290
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)