openapi: 3.0.3 info: title: Okra API (Historical) Accounts Verification API description: RETIRED. Okra was an open finance / open banking infrastructure API for Africa (Nigeria). This OpenAPI documents the historical, now-discontinued REST surface. Okra ceased operations in May 2025 and the host api.okra.ng no longer resolves; the paths and Bearer-secret auth below are CONFIRMED from Okra's official okraHQ/okra-node SDK, but request/response body schemas are MODELED (reconstructed from SDK parameter models and archived documentation) and are illustrative rather than authoritative. Reads and writes alike used POST with a JSON filter body. Account linking happened client-side through the Okra Widget, producing the `record`/`customer` identifiers that data endpoints operate against. version: '2.0' contact: name: Okra (defunct) url: https://okra.ng x-status: retired x-ceased-operations: 2025-05 x-grounding: Endpoint paths, base URL, and Bearer-secret auth confirmed from github.com/okraHQ/okra-node (archived 2024-02-09). Body schemas modeled. servers: - url: https://api.okra.ng/v2 description: Production (retired - no longer resolves) - url: https://api.okra.ng/v2/sandbox description: Sandbox (retired - no longer resolves) security: - okraSecret: [] tags: - name: Verification description: Nigerian KYC checks (BVN, NUBAN, TIN, RC). paths: /products/kyc/bvn-verify: post: operationId: verifyBvn tags: - Verification summary: Verify a BVN requestBody: $ref: '#/components/requestBodies/KycFilter' responses: '200': $ref: '#/components/responses/OkraData' '401': $ref: '#/components/responses/Unauthorized' /products/kyc/nuban-verify: post: operationId: verifyNuban tags: - Verification summary: Verify a NUBAN account number requestBody: $ref: '#/components/requestBodies/KycFilter' responses: '200': $ref: '#/components/responses/OkraData' '401': $ref: '#/components/responses/Unauthorized' /products/kyc/nuban-name-verify: post: operationId: verifyNubanName tags: - Verification summary: Verify a NUBAN account name match requestBody: $ref: '#/components/requestBodies/KycFilter' responses: '200': $ref: '#/components/responses/OkraData' '401': $ref: '#/components/responses/Unauthorized' /products/kyc/tin-verify: post: operationId: verifyTin tags: - Verification summary: Verify a Tax Identification Number (TIN) requestBody: $ref: '#/components/requestBodies/KycFilter' responses: '200': $ref: '#/components/responses/OkraData' '401': $ref: '#/components/responses/Unauthorized' /products/kyc/rc-verify: post: operationId: verifyRc tags: - Verification summary: Verify a company registration (RC) number requestBody: $ref: '#/components/requestBodies/KycFilter' responses: '200': $ref: '#/components/responses/OkraData' '401': $ref: '#/components/responses/Unauthorized' components: responses: Unauthorized: description: Missing or invalid Okra Secret. content: application/json: schema: $ref: '#/components/schemas/OkraEnvelope' OkraData: description: MODELED. Okra responses were JSON envelopes of the form {status, message, data}. The exact `data` shape varied per product and is not reproduced authoritatively here. content: application/json: schema: $ref: '#/components/schemas/OkraEnvelope' schemas: KycFilter: type: object description: Modeled. KYC verification input (one of bvn, nuban, tin, rc, etc.). properties: bvn: type: string nuban: type: string bank: type: string tin: type: string rc_number: type: string additionalProperties: true OkraEnvelope: type: object description: Modeled Okra response envelope. properties: status: type: string example: success message: type: string data: type: object additionalProperties: true additionalProperties: true requestBodies: KycFilter: description: Modeled KYC verification body. required: true content: application/json: schema: $ref: '#/components/schemas/KycFilter' securitySchemes: okraSecret: type: http scheme: bearer description: 'Okra Secret key issued in the Okra dashboard, sent as `Authorization: Bearer `. Confirmed from okraHQ/okra-node.'