openapi: 3.2.0 info: title: CharitySense Profiles API version: 3.0.0 description: Canonical CharitySense API for nonprofit research compiled from the canonical research overlay. contact: name: CharitySense email: mazhar@charitysense.com url: https://data.charitysense.com/contact servers: - url: https://data.charitysense.com security: [] tags: - name: Profiles description: Canonical overlay profile and filing resources. paths: /api/v2/charity/{ein}/page: get: tags: - Profiles operationId: getCharityPage summary: Get the bounded first-paint profile payload parameters: - $ref: '#/components/parameters/Ein' - $ref: '#/components/parameters/Form' - $ref: '#/components/parameters/Year' responses: '200': description: Selected form context, hero, live verdict, and section manifest. headers: ETag: schema: type: string content: application/json: schema: $ref: '#/components/schemas/CharityPage' '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/brand-icon: get: tags: - Profiles operationId: getCharityBrandIcon summary: Read the nonprofit icon bytes from the canonical website-enrichment record parameters: - $ref: '#/components/parameters/Ein' security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: A bounded raster icon served from the canonical database record. headers: ETag: schema: type: string content: image/avif: {} image/gif: {} image/jpeg: {} image/png: {} image/webp: {} image/x-icon: {} '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/sections/{SectionId}: get: tags: - Profiles operationId: getCharitySection summary: Get one section advertised by the page manifest parameters: - $ref: '#/components/parameters/Ein' - name: SectionId in: path required: true description: Section Id returned by CharityPage.Sections. schema: type: string - $ref: '#/components/parameters/Form' - $ref: '#/components/parameters/Year' - $ref: '#/components/parameters/OpaqueCursor' - $ref: '#/components/parameters/SectionLimit' - $ref: '#/components/parameters/EvidenceRef' responses: '200': description: Section data with canonical evidence references. content: application/json: schema: $ref: '#/components/schemas/CharitySection' '404': $ref: '#/components/responses/ErrorResponse' '400': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/filings: get: tags: - Profiles operationId: getCharityFilings summary: List filing metadata for one form context parameters: - $ref: '#/components/parameters/Ein' - $ref: '#/components/parameters/Form' - $ref: '#/components/parameters/OpaqueCursor' - name: Limit in: query schema: type: integer minimum: 1 maximum: 100 default: 25 responses: '200': description: Filing metadata and an optional continuation cursor. content: application/json: schema: $ref: '#/components/schemas/CharityFilings' '404': $ref: '#/components/responses/ErrorResponse' '400': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/money-network: get: tags: - Profiles operationId: getCharityMoneyNetwork summary: Page through exact latest-filing counterparties parameters: - $ref: '#/components/parameters/Ein' - name: Scope in: query description: The currently supported graph scope. Historical graph retrieval is not available. schema: type: string enum: - Latest default: Latest - name: Cursor in: query description: Opaque graph document cursor returned by NextCursor. schema: type: string - name: Direction in: query description: Optional direction relative to the requested EIN. schema: type: string enum: - Incoming - Outgoing - $ref: '#/components/parameters/SectionLimit' security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: Directed counterparty aggregates with graph evidence. content: application/json: schema: $ref: '#/components/schemas/MoneyNetwork' '404': $ref: '#/components/responses/ErrorResponse' '400': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/awards: get: tags: - Profiles operationId: getCharityAwards summary: Page through every federal award this organization holds parameters: - $ref: '#/components/parameters/Ein' - name: Cursor in: query description: Row cursor returned by NextCursor. schema: type: string - $ref: '#/components/parameters/SectionLimit' security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: Federal awards with purpose, agencies, assistance listing, and place of performance. content: application/json: schema: $ref: '#/components/schemas/AwardList' '400': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/subawards: get: tags: - Profiles operationId: getCharitySubawards summary: Page through subawards received, with their prime awards parameters: - $ref: '#/components/parameters/Ein' - name: Cursor in: query description: Row cursor returned by NextCursor. schema: type: string - $ref: '#/components/parameters/SectionLimit' security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: Subawards with the prime award and prime recipient behind each. content: application/json: schema: $ref: '#/components/schemas/SubawardList' '400': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/grantees: get: tags: - Profiles operationId: getCharityGrantees summary: List the organizations this one has funded parameters: - $ref: '#/components/parameters/Ein' - name: Limit in: query schema: type: integer minimum: 1 maximum: 200 default: 50 - name: MinYear in: query schema: type: integer - name: MinAmount in: query description: Only count grants at or above this amount. schema: type: number - name: AllCategories in: query schema: type: boolean default: false security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: Recipients ranked by total amount granted. content: application/json: schema: $ref: '#/components/schemas/GranteeList' '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' /api/v2/charity/{ein}/funders: get: tags: - Profiles operationId: getCharityFunders summary: List the organizations that have funded this one parameters: - $ref: '#/components/parameters/Ein' - name: Limit in: query description: Maximum funders to return, largest by amount first. schema: type: integer minimum: 1 maximum: 200 default: 50 - name: MinYear in: query description: Only count grants filed for this tax year or later. schema: type: integer - name: AllCategories in: query description: Include non-grant filed money flows alongside grants paid and Schedule I. schema: type: boolean default: false security: - BearerAuth: [] - ApiKeyAuth: [] responses: '200': description: Funders ranked by total amount granted to this organization. content: application/json: schema: $ref: '#/components/schemas/FunderList' '404': $ref: '#/components/responses/ErrorResponse' '422': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' components: parameters: Year: name: Year in: query description: Select a filing year. Defaults to the latest filing in the selected form context. schema: type: integer OpaqueCursor: name: Cursor in: query description: Opaque continuation value returned by NextCursor. schema: type: string Ein: name: ein in: path required: true description: Nine-digit Employer Identification Number. schema: type: integer minimum: 10000000 maximum: 999999999 SectionLimit: name: Limit in: query schema: type: integer minimum: 1 maximum: 200 default: 50 EvidenceRef: name: EvidenceRef in: query description: 'Exact EvidenceRef returned by a page or section response. Use it when retrieving an evidence-targeted historical filing or schedule row. ' schema: type: string Form: name: Form in: query description: Select an available form context. Defaults to the profile's primary form. schema: type: string enum: - '990' - 990EZ - 990N - 990PF - 990T schemas: Funder: type: object required: - EIN properties: EIN: type: integer Name: type: string Location: type: string PrimaryForm: type: string EntityType: type: string ProfileAvailable: type: boolean description: Whether a profile exists to open, read from the overlay rather than the filing requirement. Amount: type: number GrantCount: type: integer RecipientCount: type: integer description: How many of the requested organizations this funder reaches. Cohort responses only. EarliestYear: type: integer LatestYear: type: integer Categories: type: array items: type: string additionalProperties: false ScheduleIndexItem: type: object required: - Name - EvidenceRef properties: Name: type: string EvidenceRef: type: string additionalProperties: false FinancialTrend: type: object required: - Revenue - Expense - Assets - Liabilities properties: Revenue: type: array items: $ref: '#/components/schemas/FinancialTrendPoint' Expense: type: array items: $ref: '#/components/schemas/FinancialTrendPoint' Assets: type: array items: $ref: '#/components/schemas/FinancialTrendPoint' Liabilities: type: array items: $ref: '#/components/schemas/FinancialTrendPoint' additionalProperties: false RelationshipItem: type: object required: - Organization - Roles - RelationshipType - Confidences - Evidence properties: Organization: type: object additionalProperties: true Roles: type: array minItems: 1 uniqueItems: true items: type: string enum: - Source - Target RelationshipType: type: string Confidences: type: array minItems: 1 uniqueItems: true items: type: string enum: - Authoritative - Strong Evidence: type: array minItems: 1 items: type: object additionalProperties: true additionalProperties: false AwardList: type: object required: - EIN - Awards properties: EIN: type: integer Awards: type: array items: type: object additionalProperties: true AwardCount: type: integer AttributionWarnings: type: integer description: Awards on this page whose filed recipient name matches no known name for the organization. Awards are attributed through a UEI-to-EIN mapping derived from the Federal Audit Clearinghouse, and one bad row there can attach another entity's award history to an unrelated EIN. NextCursor: type: string additionalProperties: false MoneyFlowData: type: object required: - FinancialTrend properties: Revenues: type: object additionalProperties: true Expenses: type: object additionalProperties: true Assets: type: object additionalProperties: true Liabilities: type: object additionalProperties: true FundBalance: type: object additionalProperties: true FinancialTrend: $ref: '#/components/schemas/FinancialTrend' additionalProperties: false Error: type: object required: - detail properties: detail: oneOf: - type: string - type: object properties: ErrorCode: type: string Message: type: string additionalProperties: true - type: array description: FastAPI request-validation errors. items: type: object additionalProperties: true additionalProperties: false FunderList: type: object required: - EIN - Funders properties: EIN: type: integer Funders: type: array items: $ref: '#/components/schemas/Funder' FunderCount: type: integer description: Distinct counterparties across the whole match, not just the returned page. Truncated: type: boolean description: True when Limit held back some of them. TotalAmount: type: number additionalProperties: false OperatingModelModifier: type: object required: - Key - Label - Summary - EvidenceRefs properties: Key: type: string Label: type: string Value: type: number Summary: type: string EvidenceRefs: type: array items: type: string additionalProperties: false FinancialTrendPoint: type: object required: - Year properties: Year: type: integer Value: type: number EvidenceRef: type: string description: Exact Forms.