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

# Ajouter un site web

> Adds a page to the receptionist's knowledge. Allo scrapes and summarizes it during the request, so the call takes a few seconds. Up to 5 websites per receptionist.

<Note>
  **Scope requis :** `AGENTS_WRITE`
</Note>

## Comportement

Ajoute une page aux connaissances du réceptionniste. Allo l'analyse et la résume pendant la requête : l'appel prend quelques secondes et renvoie `201` avec l'entrée une fois la page lue.

Envoyez une URL `http(s)` absolue d'une page accessible publiquement. Un réceptionniste accepte jusqu'à 5 sites web, et la même URL ne peut pas être ajoutée deux fois.

La réponse ne contient jamais le texte analysé. Ce texte est ce que le réceptionniste lit, pas quelque chose que vous configurez.

Visez la page qui porte les réponses, pas la racine du site. Seule la page envoyée est lue.

## Erreurs

* `400 INVALID_KNOWLEDGE_URL` : l'URL est mal formée ou ne peut pas être analysée.
* `409 AGENT_KNOWLEDGE_ALREADY_EXISTS` : ce réceptionniste a déjà une entrée pour cette URL.
* `409 AGENT_KNOWLEDGE_LIMIT_REACHED` : le réceptionniste a déjà 5 sites web. Supprimez-en un d'abord.
* `500 AGENT_KNOWLEDGE_SCRAPE_FAILED` : la page n'a pas pu être lue. Cette erreur est réessayable : retentez dans quelques secondes et vérifiez que la page est accessible publiquement.
* `404 PHONE_NUMBER_NOT_FOUND` : ce numéro n'est pas un numéro auquel vous avez accès.


## OpenAPI

````yaml POST /v2/api/numbers/{number}/agent/knowledge/websites
openapi: 3.0.3
info:
  title: Allo API
  description: >-
    Allo API provides programmatic access to your Allo account, allowing you to
    manage webhooks, retrieve calls and contacts, and send SMS messages.


    All requests to `/v1/api/**` endpoints automatically go through quota
    checking and scope validation.
  version: 1.0.0
  contact:
    name: Allo Support
servers:
  - url: https://api.withallo.com
    description: Production server
security: []
tags:
  - name: Summary Templates
    description: >-
      Manage call summary templates that control how AI-generated call summaries
      are structured for your team.
  - name: Webhooks
    description: >-
      Manage webhook endpoints to receive real-time notifications about events
      in your Allo account. Each endpoint subscribes to one or more event topics
      and is verified with a signing secret.
  - name: Calls
    description: >-
      Retrieve and search call records with filtering and pagination. Filter
      calls by your Allo phone number.
  - name: Contacts
    description: >-
      Search and retrieve contact information with sorting and pagination.
      Includes engagement level tracking.
  - name: SMS
    description: Send SMS messages to phone numbers using your Allo numbers.
  - name: Phone Numbers
    description: Retrieve information about your Allo phone numbers.
  - name: Analytics
    description: Pre-computed call metrics, team performance, and outbound dial funnel
  - name: CRM
    description: Manage people, companies, and deals in your CRM.
  - name: Notes
    description: >-
      Internal team notes on conversations and CRM people, with @mention
      support. Notes are never visible to the contact.
  - name: Threads
    description: >-
      Team discussion threads attached to a conversation item (call, SMS, or
      conversation note). One thread per item.
  - name: AI Receptionist
    description: >-
      Read and write the AI receptionist configuration of a phone line: business
      details, voice, prompt, capabilities, business hours, transfer rules,
      scheduling calendars and knowledge sources.
paths:
  /v2/api/numbers/{number}/agent/knowledge/websites:
    post:
      tags:
        - AI Receptionist
      summary: Add website knowledge
      description: >-
        Adds a page to the receptionist's knowledge. Allo scrapes and summarizes
        it during the request, so the call takes a few seconds. Up to 5 websites
        per receptionist.
      operationId: addAgentWebsiteKnowledge
      parameters:
        - name: number
          in: path
          required: true
          description: Allo phone number in E.164 format
          schema:
            type: string
            example: '+14155551234'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  description: An absolute http(s) URL of a publicly reachable page.
                  example: https://acme.test/pricing
      responses:
        '201':
          description: The entry that was created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AgentWebsiteKnowledge'
        '400':
          $ref: '#/components/responses/ApiValidationError'
        '401':
          $ref: '#/components/responses/ApiUnauthorized'
        '403':
          $ref: '#/components/responses/ApiForbidden'
        '404':
          $ref: '#/components/responses/ApiNotFound'
        '409':
          $ref: '#/components/responses/ApiConflict'
        '429':
          $ref: '#/components/responses/ApiRateLimited'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    AgentWebsiteKnowledge:
      type: object
      description: >-
        A page Allo scraped and summarized for the receptionist to answer from.
        The scraped text itself is not reported: it is what the receptionist
        reads, not something you configure.
      properties:
        id:
          type: string
          example: wkb-abc123
        url:
          type: string
          example: https://acme.test/pricing
        status:
          type: string
          enum:
            - ACTIVE
            - DISABLED
          description: >-
            `DISABLED` keeps the entry and its scraped text, and stops the
            receptionist using it.
        created_at:
          type: string
          format: date-time
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            code:
              type: string
            message:
              type: string
            retryable:
              type: boolean
            request_id:
              type: string
            retry_after_seconds:
              type: integer
              nullable: true
  responses:
    ApiValidationError:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiUnauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiForbidden:
      description: API key lacks the required scope or access to the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiConflict:
      description: Conflict with existing resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiRateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````