DoneThat API

DoneThat API as documented publicly: 19 operations. Contract generated from the documentation by API Evangelist (2026-11-05); not the provider's own document.

Operations 19

GET /.well-known/oauth-authorization-server Authorization server metadata (RFC 8414) #
GET /.well-known/oauth-protected-resource Protected resource metadata (RFC 9728) #
GET /.well-known/openid-configuration Same metadata for OIDC discovery clients #
GET /message GET /message #
POST /message Messages : generate formatted day/week/month summaries. #
GET /oauth/authorize Authorization (browser sign-in) #
POST /oauth/register Dynamic client registration #
POST /oauth/revoke End access for a token (RFC 7009) #
GET /oauth/scopes Human-readable scope list #
POST /oauth/token Token exchange and refresh #
POST /project Project (deprecated) : operation-based project endpoint for existing integrations. #
GET /projects Projects : list, create, update, and archive projects. #
POST /projects Projects : list, create, update, and archive projects. #
DELETE /projects/{id} Delete a project #
GET /projects/{id} Read one project #
POST /projects/{id} Update or archive a project #
POST /report POST /report #
POST /search Search : search task and activity history. #
GET /user User : read basic profile information for the API key owner. #

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/donethat-ai:donethat-ai-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

donethat-ai-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: DoneThat API
  version: '2026-11-05'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-05: 19 operation(s) read from 8 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; DoneThat has published no machine-readable contract that the
    pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 2
    documentation: 17
    pages-with-code: 6
    pages-read: 8
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-05'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://donethat.ai/api-reference
  - https://donethat.ai/api-reference/user
  - https://donethat.ai/api-reference/search
  - https://donethat.ai/api-reference/project
  - https://donethat.ai/api-reference/reports
  - https://donethat.ai/api-reference/messages
  - https://donethat.ai/api-reference/projects
  - https://donethat.ai/mcp
servers:
- url: https://api.donethat.ai
paths:
  /.well-known/oauth-authorization-server:
    get:
      operationId: get_well_known_oauth_authorization_server
      tags:
      - API
      summary: Authorization server metadata (RFC 8414)
      x-source: https://donethat.ai/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /.well-known/oauth-protected-resource:
    get:
      operationId: get_well_known_oauth_protected_resource
      tags:
      - API
      summary: Protected resource metadata (RFC 9728)
      x-source: https://donethat.ai/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /.well-known/openid-configuration:
    get:
      operationId: get_well_known_openid_configuration
      tags:
      - API
      summary: Same metadata for OIDC discovery clients
      x-source: https://donethat.ai/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /message:
    get:
      operationId: get_message
      tags:
      - Message
      summary: GET /message
      x-source: https://donethat.ai/api-reference/messages
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET \"https://api.donethat.ai/message\"  -H \"x-api-key: YOUR_API_KEY\"\n Fetch a specific day as plain text via GET: "
    post:
      operationId: post_message
      tags:
      - Message
      summary: 'Messages : generate formatted day/week/month summaries.'
      x-source: https://donethat.ai/api-reference
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /oauth/authorize:
    get:
      operationId: get_oauth_authorize
      tags:
      - Oauth
      summary: Authorization (browser sign-in)
      x-source: https://donethat.ai/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /oauth/register:
    post:
      operationId: post_oauth_register
      tags:
      - Oauth
      summary: Dynamic client registration
      x-source: https://donethat.ai/mcp
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /oauth/revoke:
    post:
      operationId: post_oauth_revoke
      tags:
      - Oauth
      summary: End access for a token (RFC 7009)
      x-source: https://donethat.ai/mcp
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /oauth/scopes:
    get:
      operationId: get_oauth_scopes
      tags:
      - Oauth
      summary: Human-readable scope list
      x-source: https://donethat.ai/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /oauth/token:
    post:
      operationId: post_oauth_token
      tags:
      - Oauth
      summary: Token exchange and refresh
      x-source: https://donethat.ai/mcp
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /project:
    post:
      operationId: post_project
      tags:
      - Project
      summary: 'Project (deprecated) : operation-based project endpoint for existing integrations.'
      x-source: https://donethat.ai/api-reference
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /projects:
    get:
      operationId: get_projects
      tags:
      - Projects
      summary: 'Projects : list, create, update, and archive projects.'
      x-source: https://donethat.ai/api-reference
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_projects
      tags:
      - Projects
      summary: 'Projects : list, create, update, and archive projects.'
      x-source: https://donethat.ai/api-reference
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /projects/{id}:
    delete:
      operationId: delete_projects_id
      tags:
      - Projects
      summary: Delete a project
      description: Delete a project (not supported; returns 403)
      x-source: https://donethat.ai/api-reference/projects
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '403':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteProjectsIdResponse'
      x-evidence:
        kind: documentation
    get:
      operationId: get_projects_id
      tags:
      - Projects
      summary: Read one project
      description: Read one project
      x-source: https://donethat.ai/api-reference/projects
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProjectsIdResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_projects_id
      tags:
      - Projects
      summary: Update or archive a project
      description: Update or archive a project
      x-source: https://donethat.ai/api-reference/projects
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostProjectsIdRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostProjectsIdResponse'
      x-evidence:
        kind: documentation
  /report:
    post:
      operationId: post_report
      tags:
      - Report
      summary: POST /report
      x-source: https://donethat.ai/api-reference
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostReportResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \"https://api.donethat.ai/report\"  -H \"Content-Type: application/json\"  -H \"x-api-key: YOUR_API_KEY\"  -d '{\
          \ ... }'\n Scopes \n When you create an API key, pick the minimum scopes the integration needs. Requests without the right scope return\
          \ 403 . \n Scope Grants reports:read Read aggregated activity via /report ; also accepted by /message . summaries:read Read formatted\
          \ summaries via /me"
  /search:
    post:
      operationId: post_search
      tags:
      - Search
      summary: 'Search : search task and activity history.'
      x-source: https://donethat.ai/api-reference
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /user:
    get:
      operationId: get_user
      tags:
      - User
      summary: 'User : read basic profile information for the API key owner.'
      x-source: https://donethat.ai/api-reference
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    DeleteProjectsIdResponse:
      type: object
      properties:
        success:
          type: boolean
        error:
          type: string
    GetProjectsIdResponse:
      type: object
      properties:
        success:
          type: boolean
        project:
          type: object
          description: Project object
    PostProjectsIdRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        color:
          type: string
        team:
          type: string
        portfolio:
          type: string
        private:
          type: boolean
        contributorIds:
          type: array
        archived:
          type: boolean
    PostProjectsIdResponse:
      type: object
      properties:
        success:
          type: boolean
        project:
          type: object
    PostReportResponse:
      type: object
      properties:
        success:
          type: boolean
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
security:
- apiKey: []
tags:
- name: API
- name: Message
- name: Oauth
- name: Project
- name: Projects
- name: Report
- name: Search
- name: User