# Create an invoice timeline comment

Creates an invoice timeline comment.

Endpoint: POST /invoices/{id}/timeline
Version: latest
Security: SecretApiKey, JWT

## Path parameters:

  - `id` (string, required)
    ID of the resource.

## Request fields (application/json):

  - `message` (string)
    Describes the message details.

## Response 201 fields (application/json):

  - `id` (string)
    ID of the timeline message.
    Example: tmln_0YV8Q9WEF5DTA8HFXS27D1G6GC

  - `type` (string)
    Type of timeline message.
    Enum: "coupon-applied", "email-message-sent", "invoice-abandoned", "invoice-disputed", "invoice-issued", "invoice-paid", "invoice-partially-paid", "invoice-partially-refunded", "invoice-past-due", "invoice-refunded", "invoice-reissued", "invoice-renewal-payment-declined", "invoice-revenue-recognized", "invoice-tax-calculation-failed", "invoice-voided", "quickbooks-credit-memo-created", "quickbooks-credit-memo-voided", "quickbooks-invoice-created", "quickbooks-invoice-task-failed", "quickbooks-invoice-updated", "quickbooks-invoice-voided", "quickbooks-revenue-recognition-created", "timeline-comment-created", "transaction-abandoned", "transaction-approved", "transaction-canceled", "transaction-declined", "transaction-initiated", "transaction-partially-refunded", "transaction-refunded", "transaction-voided"

  - `triggeredBy` (string)
    Specifies who, or what, triggered the timeline event.
    Enum: "rebilly", "app", "direct-api"

  - `message` (string)
    Describes the message details.

  - `extraData` (object)
    Additional data.

  - `extraData.actions` (array)
    Actions available for a timeline message.
If no actions are available, this field is empty.

  - `extraData.actions.action` (string)
    Enum: "redemption-cancel"

  - `extraData.actions.redemptionId` (string)
    Unique resource ID.
    Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21

  - `extraData.actions.version` (integer)
    Version of the ruleset to restore.

  - `extraData.tables` (array)
    Table data that is attached to the timeline message.

  - `extraData.tables.type` (string)
    Enum: "list", "one-columns", "two-columns", "three-columns"

  - `extraData.tables.title` (string)
    Data table title.

  - `extraData.tables.footer` (string)
    Data table footer.

  - `extraData.author` (object)
    Author of the timeline message.

  - `extraData.author.userFullName` (string)
    Full name of the author.

  - `extraData.author.userId` (string)
    ID of the author.
    Example: usr_0YVCEENYJ3D7Q9EN6BN16HA0G4

  - `extraData.links` (array)
    Links that are attached to a timeline message.

  - `extraData.links.resourceType` (string)
    Enum: "kyc-document", "invoice", "subscription", "transaction", "email-message", "dispute", "coupon", "external"

  - `extraData.links.placeholder` (string)
    Example: KYC document

  - `extraData.links.externalUrl` (string)
    Example: http://example.com

  - `occurredTime` (string)
    Read-only timestamp in ISO 8601 date-time format.

  - `_links` (array)
    Related links.

  - `_links.href` (string)
    Link URL.

  - `_links.rel` (string)
    Type of link.
    Enum: "self"

## Response 401 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 403 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 422 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

  - `invalidFields` (array)
    Invalid field details.
    Example: [{"field":"field1","message":"field1 is invalid"},{"field":"subObject.field2","message":"field2 is invalid"},{"field":"subObject.field2","message":"another error in the field2"}]

  - `invalidFields.field` (string)
    Name of the field.
Dot notation is used for nested object field names.

  - `invalidFields.message` (string)
    Message field.

## Response 429 fields (application/json):

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".
    Example: about:blank

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.
    Example: Rate Limit Exceeded

  - `status` (integer)
    HTTP status code.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.
    Example: A request cannot be executed because the user has sent too many requests within a certain period of time

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

