GET /api/v1/contacts/{id}/export
Requires the contacts:export permission.
Authentication
Use an agent API key and secret.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| id | path | integer | Yes |
Responses
200
All stored data for the contact, sent as an attachment named contact-<id>-data.json.
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| contact | object | No | |
| contact.id | integer | No | example: 1 |
| contact.created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| contact.first_name | string | No | example: "Customer" |
| contact.last_name | string | No | nullable: true example: "A" |
| contact.email | string | No | nullable: true example: "[email protected]" |
| contact.phone_number_country_code | string | No | nullable: true |
| contact.phone_number | string | No | nullable: true |
| contact.country | string | No | nullable: true |
| contact.avatar_url | string | No | nullable: true |
| contact.external_user_id | string | No | nullable: true |
| contact.custom_attributes | object | No | |
| contact.availability_status | string | No | example: "offline" |
| contact.last_active_at | string (date-time) | No | nullable: true example: "2025-08-28T10:00:00Z" |
| contact.last_login_at | string (date-time) | No | nullable: true example: "2025-08-28T10:00:00Z" |
| contact.enabled | boolean | No | example: true |
| conversations | array of object | No | |
| conversations[].reference_number | string | No | example: "100" |
| conversations[].created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| conversations[].subject | string | No | nullable: true |
| conversations[].status | string | No | example: "Open" |
| conversations[].custom_attributes | object | No | |
| conversations[].messages | array of object | No | |
| conversations[].messages[].created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| conversations[].messages[].type | string (enum) | No | enum: ["incoming", "outgoing"] example: "incoming" |
| conversations[].messages[].sender_type | string | No | example: "contact" |
| conversations[].messages[].content | string | No | nullable: true example: "Hello" |
| conversations[].csat_responses | array of object | No | |
| conversations[].csat_responses[].created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| conversations[].csat_responses[].rating | integer | No | example: 5 |
| conversations[].csat_responses[].feedback | string | No | nullable: true |
| conversations[].csat_responses[].response_timestamp | string (date-time) | No | nullable: true example: "2025-08-28T10:00:00Z" |
400
Invalid request
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
401
Unauthorized
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
403
Permission denied
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
404
Not found
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
500
Internal server error
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
Specification
Download the complete OpenAPI specification.
OpenAPI definition for this endpoint
openapi: 3.0.0
info:
title: Libredesk API
description: >-
REST API documentation for Libredesk helpdesk system.
## Authentication
The Libredesk API supports two authentication methods:
### 1. Basic Authentication
Use your API key and secret with Basic authentication:
```
Authorization: Basic <base64_encoded_api_key:api_secret>
```
### 2. Token Authentication
Use your API key and secret with token authentication:
```
Authorization: token api_key:api_secret
```
To obtain API credentials, generate them from your agent profile in the
Libredesk dashboard.
version: 1.0.0
servers:
- url: http://localhost:8080
description: Local development server
security:
- basicAuth: []
- tokenAuth: []
paths:
/api/v1/contacts/{id}/export:
get:
tags:
- Contacts
summary: Export Contact Data
description: Requires the `contacts:export` permission.
operationId: handleExportContact
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: >-
All stored data for the contact, sent as an attachment named
`contact-<id>-data.json`.
content:
application/json:
schema:
$ref: '#/components/schemas/ContactDataExport'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Permission denied
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- basicAuth: []
- tokenAuth: []
components:
schemas:
ContactDataExport:
type: object
properties:
contact:
type: object
properties:
id:
type: integer
example: 1
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
first_name:
type: string
example: Customer
last_name:
type: string
nullable: true
example: A
email:
type: string
nullable: true
example: [email protected]
phone_number_country_code:
type: string
nullable: true
phone_number:
type: string
nullable: true
country:
type: string
nullable: true
avatar_url:
type: string
nullable: true
external_user_id:
type: string
nullable: true
custom_attributes:
type: object
availability_status:
type: string
example: offline
last_active_at:
type: string
format: date-time
nullable: true
example: '2025-08-28T10:00:00Z'
last_login_at:
type: string
format: date-time
nullable: true
example: '2025-08-28T10:00:00Z'
enabled:
type: boolean
example: true
conversations:
type: array
items:
type: object
properties:
reference_number:
type: string
example: '100'
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
subject:
type: string
nullable: true
status:
type: string
example: Open
custom_attributes:
type: object
messages:
type: array
items:
type: object
properties:
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
type:
type: string
enum:
- incoming
- outgoing
example: incoming
sender_type:
type: string
example: contact
content:
type: string
nullable: true
example: Hello
csat_responses:
type: array
items:
type: object
properties:
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
rating:
type: integer
example: 5
feedback:
type: string
nullable: true
response_timestamp:
type: string
format: date-time
nullable: true
example: '2025-08-28T10:00:00Z'
ErrorResponse:
type: object
description: Error response format
properties:
status:
type: string
example: error
message:
type: string
description: Error message
example: Invalid request
data:
nullable: true
description: Additional error data
error_type:
type: string
enum:
- GeneralException
- PermissionException
- InputException
- DataException
- NetworkException
- NotFoundException
- ConflictException
- UnauthorizedException
- RateLimitException
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
Basic authentication using base64 encoded API key and secret. Format:
`Authorization: Basic <base64(api_key:api_secret)>`
tokenAuth:
type: apiKey
name: Authorization
in: header
description: >-
Token authentication using API key and secret. Format: `Authorization:
token api_key:api_secret`
