> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Deletes a time entry.

> The entry is addressed by its id alone; the authenticated service provider is what scopes the
lookup, so an entry belonging to another service provider is reported as not found.


Only a time entry that is still open can be deleted. One that has been approved, completed or
invoiced is rejected with 409, as is one that is void — deleting a settled entry would return it to the
open pipeline while an invoice still bills the same hours. Reversing an approved or invoiced
entry is a separate, explicit flow: delete the invoice item, then unapprove. An entry logged
against a ticket that is closed is rejected with 409 as well, whatever its own billing state —
reopen the ticket first.


For an entry that is still open, this behaves exactly as the app's delete does, which is a
two-step: an entry waiting for approval is returned to unclosed and stays where it is, and
deleting it again deactivates it and reverts its billing ledger. The response's
`outcome` says which happened — `Reopened` or `Deleted`. Deleting an entry that
is already deleted is accepted and reports `Deleted` without touching the ledger again.




## OpenAPI

````yaml /api-reference/openapi.json delete /v1/time-entries/{timeEntryId}
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/time-entries/{timeEntryId}:
    delete:
      tags:
        - Billing
        - Tickets
      summary: Deletes a time entry.
      description: "The entry is addressed by its id alone; the authenticated service provider is what scopes the\r\nlookup, so an entry belonging to another service provider is reported as not found.\r\n\n\r\nOnly a time entry that is still open can be deleted. One that has been approved, completed or\r\ninvoiced is rejected with 409, as is one that is void — deleting a settled entry would return it to the\r\nopen pipeline while an invoice still bills the same hours. Reversing an approved or invoiced\r\nentry is a separate, explicit flow: delete the invoice item, then unapprove. An entry logged\r\nagainst a ticket that is closed is rejected with 409 as well, whatever its own billing state —\r\nreopen the ticket first.\r\n\n\r\nFor an entry that is still open, this behaves exactly as the app's delete does, which is a\r\ntwo-step: an entry waiting for approval is returned to unclosed and stays where it is, and\r\ndeleting it again deactivates it and reverts its billing ledger. The response's\r\n`outcome` says which happened — `Reopened` or `Deleted`. Deleting an entry that\r\nis already deleted is accepted and reports `Deleted` without touching the ledger again.\r\n"
      operationId: delete_v1_time-entries_timeEntryId
      parameters:
        - name: timeEntryId
          in: path
          description: Time entry to delete.
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DeleteTimeEntryResultBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteTimeEntryResultBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/DeleteTimeEntryResultBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '409':
          description: Conflict
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    DeleteTimeEntryResultBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/DeleteTimeEntryResult'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    DeleteTimeEntryResult:
      type: object
      properties:
        Id:
          type: integer
          format: int64
        Outcome:
          type: string
          description: "What the delete actually did. A time entry that has been closed for billing is first pulled\r\nback out of the billing pipeline — the same two-step the app has — so a single DELETE does not\r\nalways remove the entry. Without this field both outcomes would look like an identical 200\r\nwhile the entry was still listed.\r\n\n`Deleted` — the entry is now inactive and its billing ledger entries reverted.\n`Reopened` — the entry was closed for billing and has been returned to unclosed;\r\ndelete it again to remove it."
      additionalProperties: false
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.