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

# List the lines that need attention

> Lists the lines of your account that have a fault at the time of the call, with the reasons of each BYOD line.

* **Credential:** an API key.
* **Line-scoped keys:** a [line-scoped key](/authentication#line-scoped-keys) gets only the entries of the lines in its list.
* **Events:** none.
* **Personal data:** `phone_number`, the full number of each listed line. Request it only when needed, do not copy it into logs, tickets or other tools, and refer to a contact by an id of your own.
* **What is listed:** one entry per line that has a fault. A BYOD line is listed as soon as the fault is seen, with its `reasons`. Any other line is listed once the fault has lasted 15 minutes, with `reasons: []` and `detail_withheld: true`: write to [support@isnap.ai](mailto:support@isnap.ai) with the `line_id` to report it. The meaning of each reason is in [Attention](/guides/managing-lines#attention).
* **What is not listed:** a `suspended` line is not listed for its suspension. Read each rented or BYOD line whose id you keep with [`GET /v1/lines/{id}`](/api-reference/lines/get-line) to see its `status`.
* **Pagination:** none. The API does not bound the number of entries.
* **SDK:** the SDK has no method for this operation. Call it with `client.request('GET', '/v1/attention')`.

## Errors

This operation has no error of its own. The errors that every operation shares are in [Errors](/errors-and-rate-limits#errors).


## OpenAPI

````yaml GET /v1/attention
openapi: 3.0.0
info:
  title: iSnap API
  version: 2.45.0
  description: >-
    The iSnap API sends and receives iMessage, RCS and SMS on real phone lines,
    manages those lines, and reports events through webhooks. Every message is
    sent to a real recipient, with an `isnap_live_` key and with an
    `isnap_test_` key alike. Retry a `429` after `Retry-After` seconds. Retry a
    `500` or a `503` up to 2 times, with exponential backoff. Do not retry any
    other `4xx`: fix the request. Retry a write only on an operation that honors
    `Idempotency-Key`, with the key of the first attempt. Responses carry
    personal data: handles, names and message text.
servers:
  - url: https://api.isnap.ai
security:
  - bearerAuth: []
paths:
  /v1/attention:
    get:
      summary: List the lines that need attention
      description: >-
        Lists your lines that have a fault now, one entry per line: an open
        incident, a degraded state, or a failing device check. Accepts an API
        key. A line with several faults is one entry.


        A BYOD line is listed as soon as the fault is seen, with its `reasons`
        and `detail_withheld: false`. Any other line is listed once the fault
        has lasted 15 minutes, with `reasons: []` and `detail_withheld: true`.


        An entry disappears when the fault ends: the list is the state now, with
        no history, and it lets you rebuild that state after a missed event. The
        list holds faults, not statuses: a `suspended` line is not listed for
        its suspension, and `GET /v1/lines/my` leaves it out. Read a rented or
        BYOD line whose id you keep with `GET /v1/lines/{id}` to see its
        `status`. Entries are ordered by `since`, oldest first, with the entries
        that have no `since` last, then by `line_id`. The whole list comes in
        one response. A line-scoped key gets only the lines in its list. Each
        entry carries the phone number of a line: this is personal data.
      responses:
        '200':
          description: The lines that have a fault now, oldest fault first.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                    description: Always `true` on a success response.
                  data:
                    $ref: '#/components/schemas/AttentionList'
                  trace_id:
                    type: string
                    description: >-
                      Trace id of the request that produced this response: 32
                      lowercase hexadecimal characters. Quote it when you report
                      a problem to iSnap.
                  request_id:
                    type: string
                    description: >-
                      Id of the request that produced this response: `req_`
                      followed by 25 letters or digits.
                required:
                  - success
                  - data
                  - trace_id
                  - request_id
        '400':
          description: >-
            Invalid request. `error.code` is `validation_failed` when a
            parameter, a header or the body does not match its schema:
            `error.issues` then lists each problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: No valid credential. `error.code` is `unauthorized`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: >-
            Too many requests. `error.code` is `rate_limit_exceeded` when more
            than 100 requests came from the same network address in 60 seconds,
            whatever their API key or account: wait `error.retry_after` seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '500':
          description: >-
            Unexpected failure. `error.code` is `internal_error`. An operation
            that takes a JSON body also returns it when the body, sent as
            `application/json`, is not valid JSON. Quote `trace_id` when you
            report it to iSnap.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - bearerAuth: []
components:
  schemas:
    AttentionList:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/AttentionEntry'
          description: >-
            One entry per line that has a fault now, ordered by `since`, oldest
            first. Empty when no line has a fault.
      required:
        - entries
      description: Your lines that have a fault now.
    ErrorEnvelope:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
          description: Always `false` on an error response.
        data:
          nullable: true
          description: Always `null` on an error response.
        error:
          type: object
          properties:
            status:
              type: integer
              description: The HTTP status of the response.
            code:
              type: string
              description: >-
                Stable machine-readable code that names the refusal. Branch on
                this value.
            message:
              type: string
              description: >-
                Text for a person. It can change between versions: do not branch
                on it.
            retry_after:
              type: integer
              nullable: true
              description: >-
                Seconds to wait before the next attempt. Set on the `429`
                responses that know a delay, where the `Retry-After` header
                carries the same value. When it is above 60 seconds, do not wait
                in a request: schedule the call, or report the time. `null` on
                every other error.
            retry_at:
              type: string
              nullable: true
              description: >-
                ISO 8601 timestamp at which the refusal ends. Set only on `429
                rebind_cap_reached`. `null` on every other error.
            issues:
              type: array
              nullable: true
              items:
                type: object
                properties:
                  path:
                    type: array
                    items:
                      anyOf:
                        - type: string
                        - type: number
                    description: >-
                      Where the problem is: the field names and array indexes
                      that lead to it.
                  message:
                    type: string
                    description: Text for a person.
                  code:
                    type: string
                    description: >-
                      Kind of problem. On `validation_failed`, for example
                      `invalid_type`, `invalid_value`, `invalid_format`,
                      `invalid_union`, `invalid_key`, `invalid_element`,
                      `too_small`, `too_big`, `not_multiple_of`,
                      `unrecognized_keys` or `custom`. The list is open: read
                      `path` and `message`.
                  min:
                    type: integer
                    description: >-
                      Smallest accepted value. Present only on
                      `limit_out_of_bounds`, `mac_quantity_not_a_pack`,
                      `byop_reduction_strands_mac_sessions` and
                      `byop_reduction_strands_byod_lines`.
                  max:
                    type: integer
                    description: >-
                      Largest accepted value. Present only on
                      `limit_out_of_bounds` and
                      `mac_sessions_exceed_byop_lines`, and on the `too_big`
                      issue of an `Idempotency-Key` header longer than 255
                      characters.
                required:
                  - path
                  - message
                  - code
              description: >-
                Problems found in the request, one entry each. Set on most `400
                validation_failed` responses and on the refusals that name a
                field: a refused `handle` of `POST /v1/lookup` has `issues:
                null`. `null` on every other error.
          required:
            - status
            - code
            - message
            - retry_after
            - retry_at
            - issues
          description: >-
            What went wrong. The six fields are always present; `retry_after`,
            `retry_at` and `issues` are `null` when they do not apply.
        trace_id:
          type: string
          description: >-
            Trace id of the request that produced this response: 32 lowercase
            hexadecimal characters. Quote it when you report a problem to iSnap.
        request_id:
          type: string
          description: >-
            Id of the request that produced this response: `req_` followed by 25
            letters or digits.
      required:
        - success
        - data
        - error
        - trace_id
        - request_id
      description: The body of an error response.
    AttentionEntry:
      type: object
      properties:
        line_id:
          type: string
          description: 'Id of the line: `line_` followed by 25 letters or digits.'
        phone_number:
          type: string
          nullable: true
          description: >-
            The full phone number of the line. `null` when the line has none:
            the line object returns an empty string for the same line.
        ownership:
          type: string
          description: >-
            The kind of line: `rental` for a rented line, `byod` for a BYOD
            line, `pool` for a test line or a dedicated pool line, `shared` for
            a shared line.
        since:
          type: string
          nullable: true
          description: >-
            Timestamp at which the oldest fault of the line started (ISO 8601,
            UTC). `null` when the start is not known, which occurs on BYOD lines
            only.
        reasons:
          type: array
          items:
            type: string
          description: >-
            Why the line is listed. Always empty on a line that is not a BYOD
            line. On a BYOD line, zero or more of the values below: treat the
            list as open, and ignore a value you do not know.
            `line_bridge_not_reporting`: the device of the line has stopped
            reporting. `line_apple_id_flagged`: Apple disabled or challenged the
            Apple ID that the device is signed in to.
            `apple_account_reauth_required`: the Apple ID must be signed in
            again on the device. `phone_alias_unregistered`: the number of the
            line is not registered for iMessage on the device. `not_receiving`:
            messages sent to the line do not arrive on the device.
            `device_blocked`: the device has reported the state `blocked` for
            longer than iSnap allows. `full_disk_access_failed`: the bridge app
            lacks the permission to read the messages on the device.
            `private_api_failed`: some sending features of the device keep
            failing, and receiving still works. `storage_below_floor`: the free
            storage of the device is below the minimum that iSnap sets, and
            received files can stop being stored. `phone_drift`: the number that
            the device reports is not the number of the line.
        detail_withheld:
          type: boolean
          description: >-
            `true` when `reasons` is empty because the line is not a BYOD line:
            the reasons of such a line are not disclosed. To report its fault,
            write to support@isnap.ai with the `line_id`. `false` on a BYOD
            line.
      required:
        - line_id
        - phone_number
        - ownership
        - since
        - reasons
        - detail_withheld
      description: One line that has a fault now.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key created in the iSnap dashboard, or a trial key, sent as
        `Authorization: Bearer <key>`. An API key starts with `isnap_live_` or
        `isnap_test_`; both act on the same account, lines and billing. A trial
        key acts on its trial only.

````

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