Forithmus Credits API
The credits API from Forithmus — 16 operation(s) for credits.
The credits API from Forithmus — 16 operation(s) for credits.
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/forithmus:forithmus-credits-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: Forithmus Challenge Platform Credits API
version: 1.0.0
tags:
- name: Credits
paths:
/admin/credits/transactions:
get:
tags:
- Credits
summary: List Transactions
description: List recent credit transactions across all users.
operationId: list_transactions_admin_credits_transactions_get
parameters:
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
default: 50
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreditTransactionOut'
title: Response List Transactions Admin Credits Transactions Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits:
get:
tags:
- Credits
summary: List Pools
operationId: list_pools_admin_credits_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CreditPoolOut'
type: array
title: Response List Pools Admin Credits Get
post:
tags:
- Credits
summary: Create Pool
operationId: create_pool_admin_credits_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreditPoolCreate'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditPoolOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/{pool_id}:
patch:
tags:
- Credits
summary: Update Pool
operationId: update_pool_admin_credits__pool_id__patch
parameters:
- name: pool_id
in: path
required: true
schema:
type: string
title: Pool Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreditPoolUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditPoolOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Credits
summary: Delete Pool
operationId: delete_pool_admin_credits__pool_id__delete
parameters:
- name: pool_id
in: path
required: true
schema:
type: string
title: Pool Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/grant:
post:
tags:
- Credits
summary: Grant Credits
description: 'Grant credits to a user: platform or challenge level.'
operationId: grant_credits_admin_credits_grant_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ManualCreditGrant'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditTransactionOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/transfer:
post:
tags:
- Credits
summary: Transfer Credits
description: Transfer a user's platform credits to a challenge pool.
operationId: transfer_credits_admin_credits_transfer_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreditTransferRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditTransactionOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/user/{user_id}:
get:
tags:
- Credits
summary: Get User Credits
description: 'Get a user''s full credit picture: platform + all challenge credits.'
operationId: get_user_credits_admin_credits_user__user_id__get
parameters:
- name: user_id
in: path
required: true
schema:
type: string
title: User Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/deduct:
post:
tags:
- Credits
summary: Deduct Credits
description: 'Deduct credits from a user: platform or challenge level.'
operationId: deduct_credits_admin_credits_deduct_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ManualCreditGrant'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditTransactionOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/revoke/{transaction_id}:
post:
tags:
- Credits
summary: Revoke Grant
description: 'Revoke a previous credit grant: creates a negative transaction and deducts the balance.'
operationId: revoke_grant_admin_credits_revoke__transaction_id__post
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditTransactionOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/rules:
get:
tags:
- Credits
summary: List Rules
operationId: list_rules_admin_credits_rules_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CreditGrantRuleOut'
type: array
title: Response List Rules Admin Credits Rules Get
post:
tags:
- Credits
summary: Create Rule
operationId: create_rule_admin_credits_rules_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreditGrantRuleCreate'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditGrantRuleOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/rules/{rule_id}:
patch:
tags:
- Credits
summary: Update Rule
operationId: update_rule_admin_credits_rules__rule_id__patch
parameters:
- name: rule_id
in: path
required: true
schema:
type: string
title: Rule Id
requestBody:
required: true
content:
application/json:
schema:
type: object
title: Body
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreditGrantRuleOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Credits
summary: Delete Rule
operationId: delete_rule_admin_credits_rules__rule_id__delete
parameters:
- name: rule_id
in: path
required: true
schema:
type: string
title: Rule Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/admin/credits/pools/{pool_id}/refund:
post:
tags:
- Credits
summary: Refund Pool
description: Refund remaining pool balance to the host's wallet. Superadmin only.
operationId: refund_pool_admin_credits_pools__pool_id__refund_post
parameters:
- name: pool_id
in: path
required: true
schema:
type: string
title: Pool Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/users/me/credits:
get:
tags:
- Credits
summary: Get My Platform Credits
description: Get platform credit balance + recent transactions.
operationId: get_my_platform_credits_users_me_credits_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/challenges/{slug}/credits/pool:
get:
tags:
- Credits
summary: Get Pool Stats
description: Get sponsor pool stats for a challenge. Admin only.
operationId: get_pool_stats_challenges__slug__credits_pool_get
parameters:
- name: slug
in: path
required: true
schema:
type: string
title: Slug
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Credits
summary: Update Pool Settings
description: Update pool settings (e.g. num_users). Challenge admin only.
operationId: update_pool_settings_challenges__slug__credits_pool_patch
parameters:
- name: slug
in: path
required: true
schema:
type: string
title: Slug
requestBody:
required: true
content:
application/json:
schema:
type: object
title: Body
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/challenges/{slug}/credits/me:
get:
tags:
- Credits
summary: Get My Balance
description: 'Get user''s effective balance for this challenge: wallet + sponsor amount.'
operationId: get_my_balance_challenges__slug__credits_me_get
parameters:
- name: slug
in: path
required: true
schema:
type: string
title: Slug
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/challenges/{slug}/credits/pool/history:
get:
tags:
- Credits
summary: Get Pool Funding History
description: Get all funding transactions for this challenge's pool. Admin only.
operationId: get_pool_funding_history_challenges__slug__credits_pool_history_get
parameters:
- name: slug
in: path
required: true
schema:
type: string
title: Slug
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/collections/{slug}/credits/pool:
get:
tags:
- Credits
summary: Get Collection Child Pool Stats
description: 'Get a read-only summary of all child challenge pools in this collection.
Returns a list of child challenge pools with their total funded, used, and remaining
amounts. Collections no longer manage pools directly: each challenge manages its own.
Auth: collection admin or superadmin.'
operationId: get_collection_child_pool_stats_collections__slug__credits_pool_get
parameters:
- name: slug
in: path
required: true
schema:
type: string
title: Slug
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
CreditPoolUpdate:
properties:
num_users:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Num Users
enabled:
anyOf:
- type: boolean
- type: 'null'
title: Enabled
additionalProperties: false
type: object
title: CreditPoolUpdate
description: Only num_users and enabled are updatable. Extra fields are rejected.
CreditGrantRuleCreate:
properties:
name:
type: string
maxLength: 100
minLength: 1
title: Name
level:
type: string
title: Level
default: platform
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
amount:
type: number
exclusiveMinimum: 0.0
title: Amount
condition_type:
type: string
title: Condition Type
default: edu_email
max_per_user:
type: number
title: Max Per User
default: 0
max_total_grants:
anyOf:
- type: integer
- type: 'null'
title: Max Total Grants
type: object
required:
- name
- amount
title: CreditGrantRuleCreate
ManualCreditGrant:
properties:
user_id:
type: string
format: uuid
title: User Id
amount:
type: number
exclusiveMinimum: 0.0
title: Amount
level:
type: string
title: Level
default: platform
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
description:
type: string
title: Description
default: ''
type: object
required:
- user_id
- amount
title: ManualCreditGrant
CreditTransferRequest:
properties:
user_id:
type: string
format: uuid
title: User Id
amount:
type: number
exclusiveMinimum: 0.0
title: Amount
challenge_id:
type: string
format: uuid
title: Challenge Id
type: object
required:
- user_id
- amount
- challenge_id
title: CreditTransferRequest
CreditPoolCreate:
properties:
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
collection_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Collection Id
total:
type: number
exclusiveMinimum: 0.0
title: Total
num_users:
type: integer
minimum: 1.0
title: Num Users
default: 100
type: object
required:
- total
title: CreditPoolCreate
CreditGrantRuleOut:
properties:
id:
type: string
format: uuid
title: Id
name:
type: string
title: Name
level:
type: string
title: Level
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
amount:
type: number
title: Amount
condition_type:
type: string
title: Condition Type
max_per_user:
type: number
title: Max Per User
max_total_grants:
anyOf:
- type: integer
- type: 'null'
title: Max Total Grants
enabled:
type: boolean
title: Enabled
created_at:
type: string
format: date-time
title: Created At
type: object
required:
- id
- name
- level
- challenge_id
- amount
- condition_type
- max_per_user
- enabled
- created_at
title: CreditGrantRuleOut
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
CreditTransactionOut:
properties:
id:
type: string
format: uuid
title: Id
type:
type: string
title: Type
level:
type: string
title: Level
amount:
type: number
title: Amount
balance_after:
type: number
title: Balance After
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
description:
type: string
title: Description
created_at:
type: string
format: date-time
title: Created At
type: object
required:
- id
- type
- level
- amount
- balance_after
- challenge_id
- description
- created_at
title: CreditTransactionOut
CreditPoolOut:
properties:
id:
type: string
format: uuid
title: Id
challenge_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Challenge Id
collection_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Collection Id
total:
type: number
title: Total
used:
type: number
title: Used
num_users:
type: integer
title: Num Users
per_user_amount:
type: number
title: Per User Amount
enabled:
type: boolean
title: Enabled
refunded:
type: boolean
title: Refunded
default: false
remaining:
type: number
title: Remaining
default: 0
created_at:
type: string
format: date-time
title: Created At
type: object
required:
- id
- total
- used
- num_users
- per_user_amount
- enabled
- created_at
title: CreditPoolOut
x-provenance:
method: harvested
publisher: Forithmus
source: https://research.forithmus.com/api/openapi.json
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)