Farasa Web API

Farasa ("insight") is the Arabic text-processing toolkit built by the Arabic Language Technologies group at QCRI, Hamad Bin Khalifa University, and offered free to registered users as a keyed web API. Six endpoints were confirmed live on 2026-08-30 by unauthenticated POST probes — segmentation, lemmatization, pos, ner, diacritize and spellcheck each returned 400 "invalid api key", while sibling module paths returned 404. The api_key travels in the request body rather than a header. No OpenAPI is published by the provider; the definition in this repo is DERIVED from QCRI's own Python/Java/JavaScript/curl samples plus those probes, and the success payload shape is deliberately left unasserted because it could not be observed.

Operations 6

POST /segmentation/ Segment Arabic text into clitics and stems #
POST /lemmatization/ Reduce Arabic tokens to their lemmas #
POST /pos/ Part-of-speech tag Arabic text #
POST /ner/ Recognize named entities in Arabic text #
POST /diacritize/ Restore diacritics on Arabic text #
POST /spellcheck/ Spell-check Arabic text #

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/farasa-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hbku-farasa-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Farasa Web API
  summary: Arabic natural-language processing web API operated by the Arabic Language Technologies group at Qatar Computing Research Institute (QCRI), Hamad Bin Khalifa University.
  description: >-
    Farasa is the Arabic text-processing toolkit built by the Arabic Language Technologies group at
    the Qatar Computing Research Institute (QCRI), a research institute of Hamad Bin Khalifa
    University. Every Farasa module is exposed as a keyed HTTP POST endpoint under
    https://farasa.qcri.org/webapi/. Registration at https://farasa.qcri.org is required to obtain an
    api_key; the service is offered free of charge for registered users.

    This document is DERIVED, not published by the provider. It was written from the request samples
    the provider publishes on each module page (Python / Java / JavaScript / curl, e.g.
    https://farasa.qcri.org/lemmatization/) and from unauthenticated liveness probes run on
    2026-08-30. The 200 response body is intentionally left unconstrained: it could not be observed
    without a registered api_key, and inventing a schema for it would be fabrication.
  version: '1.0'
  contact:
    name: Farasa Support — Arabic Language Technologies, QCRI, Hamad Bin Khalifa University
    email: support@farasa.qcri.org
    url: https://farasa.qcri.org/
  x-institution: Hamad Bin Khalifa University
servers:
- url: https://farasa.qcri.org/webapi
  description: Farasa Web API, confirmed live 2026-08-30 (POST with a bad key returns 400 "invalid api key").
x-operator: institution
x-provenance:
  generated: '2026-08-30'
  method: derived
  source:
  - https://farasa.qcri.org/lemmatization/
  - https://farasa.qcri.org/segmentation/
  - https://alt.qcri.org/farasa/
  evidence: >-
    Endpoint list confirmed by unauthenticated POST probes on 2026-08-30 — segmentation,
    lemmatization, pos, ner, diacritize and spellcheck each returned HTTP 400
    "invalid api key. please register at: https://farasa.qcri.org", while sibling
    paths (constituency, dependency, tts) returned 404. Request parameters taken verbatim from the
    provider's own published code samples.
tags:
- name: Arabic NLP
  description: Arabic language processing modules.
paths:
  /segmentation/:
    post:
      tags: [Arabic NLP]
      summary: Segment Arabic text into clitics and stems
      operationId: farasaSegmentation
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
  /lemmatization/:
    post:
      tags: [Arabic NLP]
      summary: Reduce Arabic tokens to their lemmas
      operationId: farasaLemmatization
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
  /pos/:
    post:
      tags: [Arabic NLP]
      summary: Part-of-speech tag Arabic text
      operationId: farasaPos
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ner/:
    post:
      tags: [Arabic NLP]
      summary: Recognize named entities in Arabic text
      operationId: farasaNer
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
  /diacritize/:
    post:
      tags: [Arabic NLP]
      summary: Restore diacritics on Arabic text
      operationId: farasaDiacritize
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
  /spellcheck/:
    post:
      tags: [Arabic NLP]
      summary: Spell-check Arabic text
      operationId: farasaSpellcheck
      requestBody:
        $ref: '#/components/requestBodies/FarasaRequest'
      responses:
        '200':
          $ref: '#/components/responses/FarasaResult'
        '400':
          $ref: '#/components/responses/BadRequest'
components:
  requestBodies:
    FarasaRequest:
      required: true
      description: >-
        The api_key travels in the request body, not in a header. Both application/json and
        application/x-www-form-urlencoded are accepted; any other content type is rejected with
        400 "Unsupported content_type".
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FarasaRequest'
        application/x-www-form-urlencoded:
          schema:
            $ref: '#/components/schemas/FarasaRequest'
  responses:
    FarasaResult:
      description: >-
        Processed Arabic text. The exact payload shape is NOT documented by the provider and was not
        observed here — a registered api_key is required to reach a 200 — so no schema is asserted.
      content:
        application/json:
          schema:
            type: object
            description: Provider-defined JSON result. Shape unverified; see x-provenance.
    BadRequest:
      description: >-
        Rejected request. Observed forms, both returned as HTTP 400 with a text/plain body:
        "invalid api key. please register at: https://farasa.qcri.org" and
        "Unsupported content_type, use application/json or application/x-www-form-urlencoded".
      content:
        text/plain:
          schema:
            type: string
          examples:
            invalidKey:
              value: 'invalid api key. please register at: https://farasa.qcri.org'
            badContentType:
              value: 'Unsupported content_type, use application/json or application/x-www-form-urlencoded'
  schemas:
    FarasaRequest:
      type: object
      required: [text, api_key]
      properties:
        text:
          type: string
          description: The Arabic text to process, UTF-8 encoded.
          examples: ['يُشار إلى أن اللغة العربية']
        api_key:
          type: string
          description: API key issued on registration at https://farasa.qcri.org.