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.
openapi: 3.2.0
info:
title: Genify Backend Payments API
version: 0.1.0
tags:
- name: Payments
paths:
/api/payments/catalog:
get:
tags:
- Payments
summary: Public Catalog
description: 'The plans as they stand, for anyone: prices, what each plan learns and writes a month, the trial, the rates past
a plan, and what is never metered. The pricing page is checked against it before geniffy.com is uploaded; the
docs and the SDKs can read it. Nothing about any account.'
operationId: public_catalog_api_payments_catalog_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/payments/admin/usage:
get:
tags:
- Payments
summary: Usage Report
description: 'Geniffy''s own team: every account''s use in the period running now, the heaviest first, with where each
stands against its plan. Shows who would hit which line before any line acts.'
operationId: usage_report_api_payments_admin_usage_get
security:
- HTTPBearer: []
parameters:
- name: limit
in: query
required: false
schema:
type: integer
default: 500
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/payments/me:
get:
tags:
- Payments
summary: Me
operationId: me_api_payments_me_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- HTTPBearer: []
/api/payments/checkout:
post:
tags:
- Payments
summary: Checkout
operationId: checkout_api_payments_checkout_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
/api/payments/verify:
post:
tags:
- Payments
summary: Verify
operationId: verify_api_payments_verify_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
/api/payments/cancel:
post:
tags:
- Payments
summary: Cancel
operationId: cancel_api_payments_cancel_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- HTTPBearer: []
/api/payments/extra:
post:
tags:
- Payments
summary: Extra Learning
description: 'Extra learning on Pro and Max: on, a save or a question past the plan is learned and answered at once and
billed with the next renewal ($5 per million tokens learned, $5 per 1,000 written answers), never more than
the monthly cap; off, saves past the plan are kept and learned next month. The cap is in dollars of use (a rupee
plan pays Rs 100 a dollar). Paid by UPI, it can''t be switched on: UPI takes no charge after the fact. A company''s
invoiced plan has the cap agreed for its invoice: 409 invoiced_plan. A person still waiting on the list can''t
switch it on (403 waitlist); switching it off, which only stops a charge, is never refused for that.'
operationId: extra_learning_api_payments_extra_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtraIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
/api/payments/invoices/{ref}:
get:
tags:
- Payments
summary: Invoice Pdf
description: Our invoice as a PDF, for the person it was made out to; anyone else finds nothing there.
operationId: invoice_pdf_api_payments_invoices__ref__get
security:
- HTTPBearer: []
parameters:
- name: ref
in: path
required: true
schema:
type: string
title: Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/payments/webhook:
post:
tags:
- Payments
summary: Webhook
description: Razorpay calls this for every subscription and payment event. A 2xx tells it to stop retrying.
operationId: webhook_api_payments_webhook_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
components:
schemas:
VerifyIn:
properties:
razorpay_payment_id:
type: string
maxLength: 80
minLength: 4
title: Razorpay Payment Id
razorpay_subscription_id:
type: string
maxLength: 80
minLength: 4
title: Razorpay Subscription Id
razorpay_signature:
type: string
maxLength: 200
minLength: 16
title: Razorpay Signature
type: object
required:
- razorpay_payment_id
- razorpay_subscription_id
- razorpay_signature
title: VerifyIn
ExtraIn:
properties:
'on':
type: boolean
title: 'On'
cap_usd:
type: number
maximum: 100000.0
minimum: 1.0
title: Cap Usd
default: 20
type: object
required:
- 'on'
title: ExtraIn
CheckoutIn:
properties:
plan:
type: string
enum:
- pro
- max
title: Plan
period:
type: string
enum:
- monthly
- yearly
title: Period
default: monthly
currency:
type: string
enum:
- INR
- USD
title: Currency
default: INR
name:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: Name
country:
anyOf:
- type: string
maxLength: 60
- type: 'null'
title: Country
company:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: Company
tax_id:
anyOf:
- type: string
maxLength: 30
- type: 'null'
title: Tax Id
type: object
required:
- plan
title: CheckoutIn
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
securitySchemes:
HTTPBearer:
type: http
scheme: bearer