Citi · Schema
MessageRequest
BankingFinancial ServicesOpen BankingPaymentsTreasuryISO 20022Commercial CardsForeign ExchangeCustodyTrade FinanceCorporate BankingAPI Gateway
Properties
| Name | Type | Description |
|---|---|---|
| message_type | string | Message Type provided by the customer - RFR - Request for Refund (camt.056) - RRFR - Response to Request for Refund(camt.029) - PCR - Payment Confirmation Request - RPCR - Response to Payment Confirma |
| message | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/citi/main/json-schema/citi-message-request-schema.json",
"title": "MessageRequest",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/citi-non-payment-messages-api-openapi.yml#/components/schemas/Message-Request",
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Message Type provided by the customer \n- RFR - Request for Refund (camt.056) \n- RRFR - Response to Request for Refund(camt.029) \n- PCR - Payment Confirmation Request \n- RPCR - Response to Payment Confirmation Request \n- RFP - Request for Payment (pain.013) \n- RRFP - Response to Request for Payment (pain.014) \n- RRFICS - Response to Request for Information Compliance",
"enum": [
"RFR",
"RRFR",
"PCR",
"RPCR",
"RFP",
"RRFP",
"RRFICS"
],
"title": "message_type"
},
"message": {
"oneOf": [
{
"$ref": "#/$defs/Final-Response-To-Request-For-Refund"
},
{
"$ref": "#/$defs/Final-Response-To-Payment-Confirmation-Request"
},
{
"$ref": "#/$defs/Response-To-Request-For-Payment"
},
{
"$ref": "#/$defs/Outgoing-Request-For-Refund"
},
{
"$ref": "#/$defs/Response-To-Request-For-Information-Compliance"
}
]
}
},
"required": [
"message_type",
"message"
],
"$defs": {
"Address": {
"type": "string",
"maxLength": 70,
"minLength": 1,
"maxItems": 7,
"description": "Address",
"title": "Address"
},
"Debtor-Payment": {
"type": "object",
"title": "DebtorPayment",
"writeOnly": true,
"properties": {
"name": {
"minLength": 1,
"maxLength": 140,
"type": "string",
"description": "Name of Debtor that may be passed for payment initiation",
"title": "name"
},
"street_name": {
"minLength": 1,
"maxLength": 70,
"type": "string",
"description": "Street Name of Debtor that may be passed for payment initiation",
"title": "street_name"
},
"building_number": {
"minLength": 1,
"maxLength": 16,
"type": "string",
"description": "Building number of Debtor that may be passed for payment initiation",
"title": "building_number"
},
"postal_code": {
"minLength": 1,
"maxLength": 16,
"type": "string",
"description": "Postal code of Debtor that may be passed for payment initiation",
"title": "postal_code"
},
"city": {
"minLength": 1,
"maxLength": 35,
"type": "string",
"description": "City of Debtor that may be passed for payment initiation",
"title": "city"
},
"state": {
"minLength": 1,
"maxLength": 35,
"type": "string",
"description": "State of Debtor that may be passed for payment initiation",
"title": "state"
},
"country": {
"type": "string",
"description": "Country of Debtor that may be passed for payment initiation",
"pattern": "^[A-Z]{2,2}$",
"title": "country"
},
"address_lines": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"description": "Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which may be passed for payment initiation",
"items": {
"$ref": "#/$defs/Address"
},
"title": "address_lines"
}
}
},
"Debtor-Refund": {
"type": "object",
"title": "DebtorRefund",
"properties": {
"name": {
"minLength": 1,
"maxLength": 140,
"type": "string",
"description": "Name of Debtor to be passed for Refund payment \n- For United States debtor.name field is mandatory for decision code IPAY and PECR \n- For Thailand debtor.name field is not applicable \n- For Brazil debtor.name field is not applicable \n- For SEPA debtor.name field is not applicable",
"title": "name"
},
"street_name": {
"minLength": 1,
"maxLength": 70,
"type": "string",
"description": "Street Name of Debtor to be passed for Refund payment \n- For United States debtor.street_name field is optional \n- For Thailand debtor.street_name field is not applicable \n- For Brazil debtor.street_name field is not applicable \n- For SEPA debtor.street_name field is not applicable",
"title": "street_name"
},
"building_number": {
"minLength": 1,
"maxLength": 16,
"type": "string",
"description": "Building number of Debtor to be passed for Refund payment \n- For United States debtor.building_number field is optional \n- For Thailand debtor.building_number field is not applicable \n- For Brazil debtor.building_number field is not applicable \n- For SEPA debtor.building_number field is not applicable",
"title": "building_number"
},
"postal_code": {
"minLength": 1,
"maxLength": 16,
"type": "string",
"description": "Postal code of Debtor to be passed for Refund payment \n- For United States debtor.postal_code field is optional \n- For Thailand debtor.postal_code field is not applicable \n- For Brazil debtor.postal_code field is not applicable \n- For SEPA debtor.postal_code field is not applicable",
"title": "postal_code"
},
"city": {
"minLength": 1,
"maxLength": 35,
"type": "string",
"description": "City of Debtor to be passed for Refund payment \n- For United States debtor.city field is optional \n- For Thailand debtor.city field is not applicable \n- For Brazil debtor.city field is not applicable \n- For SEPA debtor.city field is not applicable",
"title": "city"
},
"state": {
"minLength": 1,
"maxLength": 35,
"type": "string",
"description": "State of Debtor to be passed for Refund payment \n- For United States debtor.state field is optional \n- For Thailand debtor.state field is not applicable \n- For Brazil debtor.state field is not applicable \n- For SEPA debtor.state field is not applicable",
"title": "state"
},
"country": {
"type": "string",
"description": "Country of Debtor to be passed for Refund payment \n- For United States debtor.country field is optional \n- For Thailand debtor.country field is not applicable \n- For Brazil debtor.country field is not applicable \n- For SEPA debtor.country field is not applicable",
"pattern": "^[A-Z]{2,2}$",
"title": "country"
},
"address_lines": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"description": "Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which is to be passed for Refund payment \n- For United States debtor.address_lines field is optional \n- For Thailand debtor.address_lines field is not applicable \n- For Brazil debtor.address_lines field is not applicable \n- For SEPA debtor.address_lines field is not applicable",
"items": {
"$ref": "#/$defs/Address"
},
"title": "address_lines"
}
}
},
"Field-level-Responses-For-RRFICS": {
"type": "object",
"description": "“FieldlevelResponsesForRRFICS”",
"title": "Field-level-Responses-For-RRFICS",
"properties": {
"field_id": {
"type": "string",
"description": "Field ID.",
"minLength": 1,
"maxLength": 16,
"title": "field_id"
},
"field_name": {
"type": "string",
"description": "Field name.",
"minLength": 1,
"maxLength": 70,
"title": "field_name"
},
"field_value": {
"type": "string",
"description": "Field value.",
"minLength": 1,
"maxLength": 70,
"title": "field_value"
},
"individual": {
"type": "object",
"description": "Input type selected as Individual. \n When individual is selected any one of the fields displayed under individual object are mandatory",
"title": "individual",
"properties": {
"name": {
"type": "string",
"description": "Name of individual.\n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "name"
},
"street_name": {
"type": "string",
"description": "Street Name of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 70,
"title": "street_name"
},
"building_number": {
"type": "string",
"description": "Building Number of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 16,
"title": "building_number"
},
"postal_code": {
"type": "string",
"description": "Postal Code of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 16,
"title": "postal_code"
},
"city": {
"type": "string",
"description": "City of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "city"
},
"state": {
"type": "string",
"description": "State of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "state"
},
"country": {
"type": "string",
"description": "Country of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 2,
"title": "country"
},
"birth_date": {
"type": "string",
"format": "date",
"description": "Birth Date of individual \n Format is YYYY-MM-DD. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"title": "birth_date"
},
"city_of_birth": {
"type": "string",
"description": "City Of Birth of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "city_of_birth"
},
"country_of_birth": {
"type": "string",
"description": "Country Of Birth of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 2,
"title": "country_of_birth"
},
"nationality": {
"type": "string",
"description": "Nationality of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "nationality"
},
"occupation": {
"type": "string",
"description": "Occupation of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "occupation"
},
"country_of_residence": {
"type": "string",
"description": "Country of Residence of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
"minLength": 1,
"maxLength": 2,
"title": "country_of_residence"
}
}
},
"entity": {
"type": "object",
"description": "Input type selected as Entity. When Entity is selected any one of the fields displayed under entity object are mandatory",
"title": "entity",
"properties": {
"name": {
"type": "string",
"description": "Name of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "name"
},
"street_name": {
"type": "string",
"description": "Street Name of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 70,
"title": "street_name"
},
"building_number": {
"type": "string",
"description": "Building Number of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 16,
"title": "building_number"
},
"postal_code": {
"type": "string",
"description": "Postal Code of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 16,
"title": "postal_code"
},
"city": {
"type": "string",
"description": "City of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "city"
},
"state": {
"type": "string",
"description": "State of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "state"
},
"country": {
"type": "string",
"description": "Country of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 2,
"title": "country"
},
"line_of_business": {
"type": "string",
"description": "Line of business of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "line_of_business"
},
"ownership_details": {
"type": "string",
"description": "Ownership Details of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 560,
"title": "ownership_details"
},
"global_presence": {
"type": "string",
"description": "Global Presence of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "global_presence"
},
"website": {
"type": "string",
"description": "Website of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "website"
},
"registration_number": {
"type": "string",
"description": "Registration Number of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "registration_number"
},
"country_of_incorporation": {
"type": "string",
"description": "Country of incorporation of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
"minLength": 1,
"maxLength": 2,
"title": "country_of_incorporation"
}
}
},
"vessel": {
"type": "object",
"description": "Input type selected as vessel. When vessel is selected any one of the fields displayed under vessel object are mandatory",
"title": "vessel",
"properties": {
"name": {
"type": "string",
"description": "Name of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "name"
},
"flag": {
"type": "string",
"description": "Flag of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "flag"
},
"ownership_details": {
"type": "string",
"description": "Ownership Details of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 560,
"title": "ownership_details"
},
"imo_number": {
"type": "string",
"description": "Imo Number of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "imo_number"
},
"gross_registered_tonnage": {
"type": "string",
"description": "Gross registered tonnage of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 10,
"title": "gross_registered_tonnage"
},
"vessel_type": {
"type": "string",
"description": "Type of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "vessel_type"
}
}
},
"aircraft": {
"type": "object",
"description": "Input type selected as aircraft. When aircraft is selected any one of the fields displayed under aircraft object are mandatory",
"title": "aircraft",
"properties": {
"call_sign": {
"type": "string",
"description": "Call Sign of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 140,
"title": "call_sign"
},
"flag": {
"type": "string",
"description": "Flag of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "flag"
},
"ownership_details": {
"type": "string",
"description": "Ownership Details of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 560,
"title": "ownership_details"
},
"msn_number": {
"type": "string",
"description": "Msn Number of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "msn_number"
},
"model": {
"type": "string",
"description": "Model of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "model"
},
"operator": {
"type": "string",
"description": "Operator of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
"minLength": 1,
"maxLength": 35,
"title": "operator"
}
}
}
}
},
"Final-Response-To-Payment-Confirmation-Request": {
"type": "object",
"title": "FinalResponseToPaymentConfirmationRequest",
"description": "Outgoing Response to Payment Confirmation Request",
"properties": {
"status": {
"type": "object",
"title": "status",
"properties": {
"date_time": {
"type": "string",
"format": "date-time",
"description": "UTC (YYYY-MM-DDTHH:MM:SS.sssZ) date time",
"title": "date_time"
},
"code": {
"type": "string",
"description": "ISO 20022 message status code",
"enum": [
"ACSC",
"RJCT"
],
"title": "code"
},
"description": {
"type": "string",
"description": "Status code description \n- ACSC - Accepted \n- RJCT - Rejected",
"minLength": 1,
"maxLength": 105,
"title": "description"
}
},
"required": [
"date_time",
"code",
"description"
]
},
"reasons": {
"type": "object",
"title": "reasons",
"properties": {
"code": {
"type": "string",
"description": "Reason code (mandatory when status is rejected) \n- For US RPCR, client need to pass reason.code only AC02,AC03,AC04,AC06,AC11,AC13,AC14,AG01,AG03,AM02,AM04,AM09,AM12,AM13,AM14,NARR \n- For Thailand RPCR, client need to pass reason.code only AM09 or NARR \n- For SEPA RPCR, client need to pass reason.code only AM05,AC01,AC04,AC06,RR04,AG01,MS03,MS02",
"enum": [
"AC02",
"AC03",
"AC04",
"AC06",
"AC11",
"AC13",
"AC14",
"AG01",
"AG03",
"AM02",
"AM04",
"AM09",
"AM12",
"AM13",
"AM14",
"NARR",
"AM05",
"AC01",
"RR04",
"MS02",
"MS03"
],
"title": "code"
},
"description": {
"type": "string",
"description": "Reason code description \n - AC02- Debtor account number invalid or missing \n - AC03- Creditor account number invalid or missing \n- AC04- Account number specified has been closed on the bank of account’s books \n- AC06- Account specified is blocked,prohibiting posting of transactions against it \n- AC11- Creditor account currency is invalid or missing \n- AC13- Debtor account type invalid \n- AC14- Creditor account type invalid \n- AG01- Transaction forbidden on this type of account (formerly NoAgreement) \n- AG03- Transaction type not supported / authorized on this account \n- AM02- Specific transaction/message amount is greater than allowed maximum \n- AM04- Amount of funds available to cover specified message amount is insufficient \n- AM09- Amount received is not the amount agreed or expected \n- AM12- Amount is invalid or missing \n- AM13- Transaction amount exceeds limits set by clearing system \n- AM14- Transaction amount exceeds limits agreed between bank and client \n- NARR- Put the description as per clearing guideline for NARR (if reasons.code is NARR, reasons.decription is mandatory) \n- AM05- Duplication \n- AC01- Incorrect Account Number \n- RR04- Regulatory Reason \n- MS03- Not Specified Reason Agent Generated \n- MS02- Not Specified Reason Customer Generated",
"minLength": 1,
"maxLength": 105,
"title": "description"
}
}
}
},
"required": [
"status"
]
},
"Final-Response-To-Request-For-Refund": {
"type": "object",
"title": "FinalResponseToRequestForRefund",
"description": "Outgoing/Incoming Response to Request for Refund",
"properties": {
"case_id": {
"type": "string",
"description": "Case Id received from clearing",
"minLength": 1,
"maxLength": 35,
"title": "case_id"
},
"decision_code": {
"type": "string",
"description": "Acceptance or Rejection of return of funds. Only the below 3 codes are applicable \n- IPAY - Acceptance to Return the payment \n- RJCR - Decline to Return the payment \n- PECR - Partially Executed Cancellation Return",
"enum": [
"ACDA",
"ACNR",
"ACVA",
"CHRG",
"CNCL",
"CONF",
"CVAA",
"CWFW",
"FTNA",
"ICOV",
"IDUP",
"IPAY",
"IPYI",
"MCOV",
"MODI",
"MWFW",
"PDCR",
"PECR",
"PURP",
"RJCR",
"RJNR",
"RJVA",
"SMTC",
"SMTI",
"UWFW",
"BIAS",
"IDNE",
"IVCR",
"INFO",
"NINF",
"PDNG"
],
"title": "decision_code"
},
"reasons": {
"type": "object",
"title": "reasons",
"properties": {
"code": {
"type": "string",
"description": "Code of Transaction reasons \n- If decision_code = RJCR,reasons.code is mandatory for ResponseToRequest-For-Refund ",
"enum": [
"AC04",
"ADAC",
"AGNT",
"AM04",
"ARDT",
"ARPL",
"CUST",
"LEGL",
"NARR",
"NOAS",
"NOOR",
"PTNA",
"RQDA",
"WSEQ",
"IDMN",
"ACLR",
"AEXR",
"ARFR",
"ARJR",
"PATE",
"RR04",
"RCAR",
"RCNR",
"RCPR",
"URTP"
],
"title": "code"
},
"description": {
"type": "string",
"description": "Reason code description (e.g., Debtor account is invalid.). \n- For reasons.code = NARR this field is mandatory",
"minLength": 1,
"maxLength": 105,
"title": "description"
}
}
},
"method": {
"type": "string",
"description": "Method type \n- MPNS - for ACH payment \n- RTGS - for FedWire \n- RTNS - for CHIPS \n- RT1 - for SEPA IP payments",
"readOnly": true,
"enum": [
"MPNS",
"RTGS",
"RTNS",
"RT1"
],
"title": "method"
},
"interbank_settlement_date": {
"type": "string",
"description": "YYYY-MM-DD Intended interbank settlement date",
"format": "date",
"readOnly": true,
"title": "interbank_settlement_date"
},
"instructed_amount": {
"type": "number",
"description": "Instructed amount for partial acceptance of return request \n- Mandatory for ResponseToRequest-For-Refund with decision code as PECR.",
"minimum": 0.01,
"maximum": 1000000000000000,
"title": "instructed_amount"
},
"instructed_currency": {
"type": "string",
"description": "Instructed currency for partial acceptance of return request \n- Mandatory for ResponseToRequest-For-Refund with decision code as PECR",
"enum": [
"USD",
"EUR",
"AUD",
"ARS",
"BRL",
"HKD",
"CNY"
],
"title": "instructed_currency"
},
"instruction_id": {
"writeOnly": true,
"type": "string",
"description": "Unique Instruction id on return payment initiation",
"minLength": 1,
"maxLength": 35,
"title": "instruction_id"
},
"end_to_end_id": {
"writeOnly": true,
"type": "string",
"description": "Unique end to end id on return payment initiation",
"minLength": 1,
"maxLength": 35,
"title": "end_to_end_id"
},
"country": {
"writeOnly": true,
"description": "ISO 3166 Alpha-2 code for the non pay message country. \n- This field is optional for US \n- This field is mandatory for SEPA",
"type": "string",
"default": "US",
"enum": [
"US",
"IE",
"DE",
"AT",
"BE",
"FI",
"FR",
"GR",
"IT",
"LU",
"NL",
"PT",
"ES",
"SK",
"AU",
"AR",
"BR",
"HK",
"BG"
],
"title": "country"
},
"network": {
"type": "string",
"readOnly": true,
"enum": [
"RTP",
"FDN"
],
"description": "Financial market infrastructure or clearing system (e.g., RTP Network in the United States) \n- RTP for TCH \n- FDN for FedNow",
"title": "network"
},
"debtor": {
"$ref": "#/$defs/Debtor-Refund"
},
"ultimate_debtor": {
"$ref": "#/$defs/Ultimate-Debtor-Refund"
},
"status": {
"type": "object",
"title": "status",
"readOnly": true,
"properties": {
"date_time": {
"type": "string",
"format": "date-time",
"description": "UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) \n- Date time, \n-, status change date time",
"title": "date_time"
},
"code": {
"type": "string",
"description": "ISO 20022 message status code",
"enum": [
"RCVD",
"RJCT",
"PDNG"
],
"title": "code"
},
"description": {
"type": "string",
"description": "Status code description \n- RJCT - Rejected \n- RCVD - Received \n - PDNG - Pending",
"minLength": 1,
"maxLength": 256,
"title": "description"
},
"reasons": {
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/citi/refs/heads/main/json-schema/citi-message-request-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/citi-message-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.