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/fawtar-app:fawtar-app-payroll-runs-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
openapi: 3.2.0
info:
title: Fawtar Business Payroll Runs API
x-capabilities: https://fawtar.app/.well-known/fawtar-capabilities.json
version: 1.0.0
description: 'Arabic-first invoicing, accounting, payroll and point of sale for Saudi businesses. Invoice QR fields do not establish full system compliance or Phase 2 integration. Filtering and sorting follow ransack conventions, and the API-KEY header is accepted alongside Authorization: Bearer, so a client written against Qoyod can be repointed here by changing the base URL and the key. Agent capabilities, sandbox onboarding and prepaid prices: https://fawtar.app/.well-known/fawtar-capabilities.json'
contact:
name: Fawtar
url: https://fawtar.app/docs/api
servers:
- url: https://fawtar.app
security:
- bearerAuth: []
tags:
- name: payroll_runs
description: المسيّرات الشهرية وإجمالياتها.
paths:
/api/v1/payroll_runs:
get:
operationId: listPayrollRuns
tags:
- payroll_runs
summary: List payroll_runs
description: للقراءة فقط. المسيّر يُنشأ من التطبيق، وقسائمه تحتفظ بأرقامها عند نسب التأمينات التي كانت سارية في شهرها.
security:
- bearerAuth:
- payroll:read
- apiKeyHeader: []
parameters:
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 50
- name: q[s]
in: query
description: 'Sort, e.g. "period_year desc". Sortable: period_year, period_month, created_at'
schema:
type: string
- name: q[field_predicate]
in: query
description: 'Ransack-style filter. Filterable fields: period_year, period_month, status, created_at. Predicates: eq, not_eq, cont, start, end, gt, gteq, lt, lteq, in, null.'
schema:
type: string
responses:
'200':
description: A page of results
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
additionalProperties: true
meta:
type: object
properties:
page:
type: integer
limit:
type: integer
total:
type: integer
'401':
description: المفتاح مفقود أو ملغى أو منتهٍ أو لا يحمل الصلاحية المطلوبة.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: تجاوزت الحد. أعد المحاولة بعد المدة في ترويسة Retry-After.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: خطأ غير متوقع من جانبنا.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/v1/payroll_runs/{id}:
get:
operationId: getPayrollRun
tags:
- payroll_runs
summary: Fetch one payroll_run
security:
- bearerAuth:
- payroll:read
- apiKeyHeader: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: The record
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
description: المفتاح مفقود أو ملغى أو منتهٍ أو لا يحمل الصلاحية المطلوبة.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: لا يوجد سجل بهذا المعرّف ضمن منشأتك.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: تجاوزت الحد. أعد المحاولة بعد المدة في ترويسة Retry-After.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
properties:
error:
type: string
enum:
- idempotency_key_required
- idempotency_conflict
- document_not_ready
- write_outcome_unknown
- document_render_failed
- invalid_json
- unauthorized
- not_found
- method_not_allowed
- delete_refused
- validation_failed
- rate_limited
- query_failed
message:
type: string
details:
type: object
additionalProperties:
type: array
items:
type: string
required:
- error
securitySchemes:
supabaseSession:
type: http
scheme: bearer
description: Provider-verified Supabase access token, for onboarding claims only.
bearerAuth:
type: http
scheme: bearer
description: 'Authorization: Bearer fwt_live_… or fwt_test_…'
apiKeyHeader:
type: apiKey
in: header
name: API-KEY
description: Qoyod-compatible header carrying the same key.