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

# Manual Update

> Synchronizes all connected financial accounts and transactions with the latest data from banks and credit card providers. Requires API key for authentication and active subscription.

<Note>
  Este endpoint força uma sincronização manual dos dados financeiros e retorna detalhes abrangentes sobre o status de cada conta.
</Note>

## Descrição

O endpoint `POST /tools/api/manual-update` força uma sincronização manual de todos os dados financeiros conectados, buscando as informações mais recentes das instituições financeiras. O endpoint processa cada conta individualmente e retorna um relatório detalhado categorizando os resultados por status de sincronização (completos, em progresso, que precisam de interação do usuário, com erros de login, etc.).

## Autenticação

Este endpoint requer autenticação via Bearer token e assinatura ativa.

<ParamField header="Authorization" type="string" required>
  Bearer token com a API key do usuário. Formato: `Bearer sk-your-api-key-here`
</ParamField>

## Parâmetros de Query

## Corpo da Requisição

Este endpoint não requer corpo de requisição.

## Resposta

### Sucesso (200)

<ResponseExample>
  ```json Success theme={null}
  {
    "success": true,
    "message": "Accounts and transactions update process completed",
    "details": {
      "totalItems": 5,
      "completed": {
        "count": 3,
        "items": [
          {
            "itemId": "item_123",
            "connectorName": "Nubank",
            "status": "UPDATED",
            "executionStatus": "SUCCESS"
          }
        ]
      },
      "needsUserInput": {
        "count": 1,
        "items": [
          {
            "itemId": "item_789",
            "connectorName": "Bradesco",
            "status": "WAITING_USER_INPUT",
            "executionStatus": "SUCCESS"
          }
        ]
      },
      "loginErrors": {
        "count": 0,
        "items": []
      },
      "outdated": {
        "count": 0,
        "items": []
      },
      "partialSuccess": {
        "count": 0,
        "items": []
      },
      "inProgress": {
        "count": 1,
        "items": [
          {
            "itemId": "item_456",
            "connectorName": "Itau",
            "status": "UPDATING",
            "executionStatus": "SUCCESS"
          }
        ]
      },
      "failed": {
        "count": 1,
        "items": [
          {
            "error": "Connection timeout"
          }
        ]
      }
    },
    "timestamp": "2024-01-15T10:30:00Z"
  }
  ```
</ResponseExample>

### Erro - Sem Contas Conectadas (400)

<ResponseExample>
  ```json Error theme={null}
  {
    "error": "No connected accounts found",
    "message": "Please connect your financial accounts first",
    "nextSteps": [
      "Visit https://pierre.finance/connect to connect your financial accounts",
      "Make sure your accounts are properly connected and synced"
    ]
  }
  ```
</ResponseExample>

### Erro de Autenticação (401)

<ResponseExample>
  ```json Error theme={null}
  {
    "error": "Invalid or inactive API key",
    "message": "Please check your API key and try again",
    "type": "invalid_api_key"
  }
  ```
</ResponseExample>

## Campos da Resposta

<ResponseField name="success" type="boolean" required>
  Indica se a requisição foi bem-sucedida
</ResponseField>

<ResponseField name="message" type="string" required>
  Mensagem de confirmação da sincronização
</ResponseField>

<ResponseField name="details" type="object" required>
  Detalhes do processo de sincronização

  <Expandable title="ManualUpdateDetails">
    <ResponseField name="totalItems" type="number">
      Total de itens processados
    </ResponseField>

    <ResponseField name="completed" type="object">
      Itens completados com sucesso (status UPDATED + executionStatus SUCCESS)
    </ResponseField>

    <ResponseField name="inProgress" type="object">
      Itens em processo de sincronização (status UPDATING ou MERGING)
    </ResponseField>

    <ResponseField name="needsUserInput" type="object">
      Itens que necessitam de interação do usuário (status WAITING\_USER\_INPUT ou WAITING\_USER\_ACTION)
    </ResponseField>

    <ResponseField name="loginErrors" type="object">
      Itens com erro de autenticação (status LOGIN\_ERROR)
    </ResponseField>

    <ResponseField name="outdated" type="object">
      Itens desatualizados (status OUTDATED)
    </ResponseField>

    <ResponseField name="partialSuccess" type="object">
      Itens com sucesso parcial (executionStatus PARTIAL\_SUCCESS)
    </ResponseField>

    <ResponseField name="failed" type="object">
      Itens que falharam na sincronização (executionStatus ERROR + erros de conexão)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="timestamp" type="string" required>
  Timestamp da requisição em formato ISO 8601
</ResponseField>

## Exemplos de Uso

### cURL

```bash theme={null}
# Forçar sincronização manual
curl -X POST 'https://www.pierre.finance/tools/api/manual-update' \
  -H 'Authorization: Bearer sk-your-api-key-here'
```

### JavaScript

```javascript theme={null}
const API_KEY = 'sk-your-api-key-here';
const BASE_URL = 'https://www.pierre.finance/tools/api';

async function manualUpdate() {
  const response = await fetch(`${BASE_URL}/manual-update`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    }
  });
  
  return await response.json();
}

// Uso
manualUpdate().then(result => {
  console.log('Sincronização iniciada:', result.message);
});
```

### Python

```python theme={null}
import requests

API_KEY = 'sk-your-api-key-here'
BASE_URL = 'https://www.pierre.finance/tools/api'

headers = {
    'Authorization': f'Bearer {API_KEY}',
    'Content-Type': 'application/json'
}

def manual_update():
    response = requests.post(f'{BASE_URL}/manual-update', headers=headers)
    return response.json()

# Uso
result = manual_update()
print('Sincronização iniciada:', result['message'])
```

## Valores de Status

Os itens na resposta podem ter os seguintes status:

### Status de Sincronização

* `UPDATED`: Item foi sincronizado com sucesso
* `UPDATING`: Item está sendo sincronizado
* `MERGING`: Item está sendo processado/mesclado
* `WAITING_USER_INPUT`: Aguardando interação do usuário
* `WAITING_USER_ACTION`: Aguardando ação do usuário
* `LOGIN_ERROR`: Erro de autenticação com a instituição
* `OUTDATED`: Item desatualizado

### Status de Execução

* `SUCCESS`: Operação executada com sucesso
* `PARTIAL_SUCCESS`: Operação executada parcialmente
* `ERROR`: Erro durante a execução

## Códigos de Status

* `200`: Sucesso - Sincronização iniciada
* `400`: Erro - Nenhuma conta conectada encontrada
* `401`: Erro de autenticação ou assinatura
* `500`: Erro interno do servidor

## Quando Usar

Execute este endpoint quando:

* O usuário pedir para "atualizar meus dados"
* O usuário pedir para "sincronizar minhas contas"
* O usuário mencionar que os dados parecem desatualizados
* O usuário pedir sobre transações recentes que não aparecem
* O usuário quiser garantir que tem as informações mais atuais
* O usuário reportar problemas com dados incompletos ou desatualizados
* Você precisar de um relatório detalhado do status de todas as contas conectadas

<Warning>
  A sincronização manual processa cada conta individualmente. Algumas contas podem ser sincronizadas imediatamente, enquanto outras podem continuar processando em background.
</Warning>

<Note>
  Este endpoint fornece um relatório detalhado do status de cada conta, permitindo identificar exatamente quais contas foram sincronizadas com sucesso e quais requerem ação adicional.
</Note>


## OpenAPI

````yaml POST /tools/api/manual-update
openapi: 3.1.0
info:
  title: Pierre Finance API
  description: >-
    API para acessar dados financeiros do Pierre Finance, incluindo contas,
    transações, parcelas e sincronização.
  version: v1.0.0
servers:
  - url: https://www.pierre.finance
security: []
tags:
  - name: Authentication
    description: API key management and authentication
  - name: Accounts
    description: Financial accounts management
  - name: Transactions
    description: Financial transactions
  - name: Installments
    description: Credit card installments and purchases
  - name: Bills
    description: Credit card bills and current bill summaries
  - name: Balance
    description: Account balance information
  - name: Closing Dates
    description: Credit card closing date management
  - name: Sync
    description: Account synchronization
  - name: Spending Limits
    description: Personal spending limits and alerts management
  - name: Payment Reminders
    description: Payment reminders management with WhatsApp and Email notifications
  - name: Analytics
    description: Financial analytics and insights
  - name: Memories
    description: User memory management for personalized AI interactions
  - name: Open Finance
    description: Open Finance connection and integration
paths:
  /tools/api/manual-update:
    post:
      tags:
        - Sync
      description: >-
        Synchronizes all connected financial accounts and transactions with the
        latest data from banks and credit card providers. Requires API key for
        authentication and active subscription.
      operationId: manualUpdate
      responses:
        '200':
          description: Manual sync initiated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Indica se a requisição foi bem-sucedida
                    example: true
                  message:
                    type: string
                    description: Mensagem de confirmação da sincronização
                    example: Accounts and transactions update process completed
                  details:
                    $ref: '#/components/schemas/ManualUpdateDetails'
                    description: >-
                      Detalhes do processo de sincronização categorizados por
                      status
                  timestamp:
                    type: string
                    format: date-time
                    description: Timestamp da requisição em formato ISO 8601
                    example: '2024-01-15T10:30:00Z'
        '400':
          description: Sem contas conectadas encontradas
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Descrição do erro
                    example: No connected accounts found
                  message:
                    type: string
                    description: Mensagem explicativa do erro
                    example: Please connect your financial accounts first
                  nextSteps:
                    type: array
                    description: Próximos passos sugeridos para resolver o problema
                    items:
                      type: string
                    example:
                      - >-
                        Visit https://pierre.finance/connect to connect your
                        financial accounts
                      - >-
                        Make sure your accounts are properly connected and
                        synced
        '401':
          $ref: '#/components/responses/AuthError'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - BearerAuth: []
components:
  schemas:
    ManualUpdateDetails: {}
    AuthError: {}
    ServerError: {}
  responses:
    AuthError:
      description: Authentication or subscription error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthError'
    ServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServerError'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: string
      description: 'API key in Bearer token format. Example: Bearer sk-your-api-key-here'

````