DID Logic Inbound Destinations API

The Inbound Destinations API from DID Logic — 2 operation(s) for inbound destinations.

Operations 4

GET /api/v1/purchases/{purchase_id}/destinations List destinations #
POST /api/v1/purchases/{purchase_id}/destinations Create destination #
PATCH /api/v1/purchases/{purchase_id}/destinations/{id} Update destination #
DELETE /api/v1/purchases/{purchase_id}/destinations/{id} Delete destination #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/didlogic-com:didlogic-com-inbound-destinations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

didlogic-com-inbound-destinations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Didlogic Com Inbound Destinations API
  version: 1.0.0
  description: 'Operations tagged Inbound Destinations across 2 of this provider''s published API definitions: didlogic-com-public-api-openapi.yaml, didlogic-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.didlogic.com
  description: Production
tags:
- name: Inbound Destinations
  x-version: v1
paths:
  /api/v1/purchases/{purchase_id}/destinations:
    get:
      summary: List destinations
      description: 'Retrieve the list of inbound destinations configured for a specific DID number.


        **Destinations** define where incoming calls to a DID should be routed (SIP addresses, phone numbers, etc.).


        **Features:**

        - Returns only current (non-deleted) destinations

        - Each destination includes active status and its dialing mode (`dialing_type`, with the legacy `callhunt` mirror)


        `destination[].id` feeds purchases_destinations_update and purchases_destinations_destroy as `id`.'
      tags:
      - Inbound Destinations
      operationId: purchases_destinations_index
      security:
      - BearerAuth: []
      parameters:
      - name: purchase_id
        in: path
        required: true
        schema:
          type: string
          example: '43800327987'
        example: '43800327987'
        description: 'Purchased number id or number from numbers_index, purchases_index: the phone **number** (e.g. `43800327987`) or the numeric **inventory id** (e.g. `21869`). Both resolve the same DID.'
      responses:
        '200':
          description: Successfully returns all current destinations for the specified DID
          content:
            application/json:
              schema:
                type: object
                properties:
                  destination:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 60
                          description: Destination ID
                        transport:
                          type: integer
                          enum:
                          - 1
                          - 4
                          - 5
                          - 10
                          - 12
                          - 13
                          example: 1
                          description: 'Transport type: 1 = SIP URI, 4 = Phone number, 5 = SIP device, 10 = Webphone, 12 = WebSocket, 13 = SDK (rings the account of one of your SDK tokens; set up through the SDK, not through this API)'
                        destination:
                          type: string
                          example: sip:test@example.com
                          description: Forwarding target
                        priority:
                          type: integer
                          example: 1
                          description: Destination priority
                        callhunt:
                          type: boolean
                          description: Whether callhunt is enabled
                        dialing_type:
                          type: string
                          enum:
                          - sequence
                          - ring_all
                          - random
                          example: sequence
                          description: 'Dialing mode of the group this destination belongs to: `sequence` tries it alone, `ring_all` dials the whole group at once, `random` picks group members in a random order. Mirrors `callhunt` (`ring_all` maps to true).'
                        active:
                          type: boolean
                          example: true
                          description: Whether destination is active
                        ai_agent_id:
                          type:
                          - integer
                          - 'null'
                          description: Linked AI agent ID (null when the destination is not an AI agent)
                        ai_agent_name:
                          type:
                          - string
                          - 'null'
                          description: Linked AI agent name (null when the destination is not an AI agent)
                      required:
                      - id
                      - transport
                      - destination
                      - priority
                      - callhunt
                      - dialing_type
                      - active
                      - ai_agent_id
                      - ai_agent_name
                    description: List of destinations
                required:
                - destination
              example:
                destination:
                - id: 60
                  transport: 1
                  destination: sip:test@example.com
                  priority: 1
                  callhunt: false
                  dialing_type: sequence
                  active: true
                  ai_agent_id: null
                  ai_agent_name: null
        '403':
          description: Returns 403 error when API token is incorrect
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              example:
                error: Unauthorized
        '404':
          description: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                  base:
                  - data not found
    post:
      summary: Create destination
      description: 'Add a new inbound destination for a DID number.


        **Destination Types:**

        - SIP addresses (e.g., `sip:user@domain.com`)

        - Phone numbers (e.g., `18005551234`)

        - Extensions (SIP accounts created within didlogic)


        **Parameters:**

        - `destination` - The forwarding target (SIP URI or phone number)

        - `dialing_type` - Dialing mode: `sequence`, `ring_all` or `random`

        - `callhunt` - Legacy two-state mirror of `dialing_type` (boolean); ignored when `dialing_type` is sent

        - `active` - Enable/disable this destination (boolean)

        - `transport` - Transport type code (1 = SIP URI, 4 = Phone number, 5 = SIP device, 10 = Webphone,

        12 = WebSocket)


        `transport: 12` streams the call to a WebSocket endpoint of your own instead of

        ringing a phone or a SIP device, and `destination` is then its public `wss://`

        URL. It is available only to accounts enabled for voice streaming; any other

        account is refused with `422`. The endpoint has to speak our protocol — see

        WebSocket Calls.


        `did_destination.id` feeds purchases_destinations_update and purchases_destinations_destroy as `id`.

        Rows: purchases_destinations_index.'
      tags:
      - Inbound Destinations
      operationId: purchases_destinations_create
      security:
      - BearerAuth: []
      parameters:
      - name: purchase_id
        in: path
        required: true
        schema:
          type: string
          example: '43800327987'
        example: '43800327987'
        description: 'Purchased number id or number from numbers_index, purchases_index: the phone **number** (e.g. `43800327987`) or the numeric **inventory id** (e.g. `21869`). Both resolve the same DID.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                destination:
                  type: object
                  properties:
                    destination:
                      type: string
                      description: Forwarding target (SIP URI or phone number). Required for every transport except Webphone (10), which rings your webphone and takes no address.
                      example: ''
                    callhunt:
                      type: boolean
                      description: Enable callhunt (ring all). Ignored when `destination[dialing_type]` is sent.
                      example: false
                    dialing_type:
                      type: string
                      description: 'Dialing mode of the group this destination belongs to: `sequence` tries it alone, `ring_all` dials the whole group at once, `random` picks group members in a random order. Mirrors `callhunt` (`ring_all` maps to true). Takes precedence over `callhunt`.'
                      enum:
                      - sequence
                      - ring_all
                      - random
                    active:
                      type: boolean
                      description: Activate this destination
                      example: true
                    transport:
                      type: integer
                      description: Transport type (1=SIP URI, 4=Phone number, 5=SIP device, 10=Webphone, 12=WebSocket). 12 requires an account enabled for voice streaming.
                      enum:
                      - 1
                      - 4
                      - 5
                      - 10
                      - 12
                      example: 1
                  required:
                  - transport
              required:
              - destination
      responses:
        '200':
          description: Successfully creates destination and returns destination details
          content:
            application/json:
              schema:
                type: object
                properties:
                  did_destination:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 59
                        description: Destination ID
                      transport:
                        type: integer
                        enum:
                        - 1
                        - 4
                        - 5
                        - 10
                        - 12
                        example: 1
                        description: Transport type
                      destination:
                        type: string
                        example: sip:test@example.com
                        description: Forwarding target
                      priority:
                        type: integer
                        example: 1
                        description: Destination priority
                      callhunt:
                        type: boolean
                        description: Whether callhunt is enabled
                      dialing_type:
                        type: string
                        enum:
                        - sequence
                        - ring_all
                        - random
                        example: sequence
                        description: 'Dialing mode of the group this destination belongs to: `sequence` tries it alone, `ring_all` dials the whole group at once, `random` picks group members in a random order. Mirrors `callhunt` (`ring_all` maps to true).'
                      active:
                        type: boolean
                        example: true
                        description: Whether destination is active
                      ai_agent_id:
                        type:
                        - integer
                        - 'null'
                        description: Linked AI agent ID (null when the destination is not an AI agent)
                      ai_agent_name:
                        type:
                        - string
                        - 'null'
                        description: Linked AI agent name (null when the destination is not an AI agent)
                    required:
                    - id
                    - transport
                    - destination
                    - priority
                    - callhunt
                    - dialing_type
                    - active
                    - ai_agent_id
                    - ai_agent_name
                    description: Created destination details
                required:
                - did_destination
              example:
                did_destination:
                  id: 59
                  transport: 1
                  destination: sip:test@example.com
                  priority: 1
                  callhunt: false
                  dialing_type: sequence
                  active: true
                  ai_agent_id: null
                  ai_agent_name: null
        '403':
          description: Returns 403 error when API token is incorrect
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              example:
                error: Unauthorized
        '404':
          description: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                  base:
                  - data not found
        '422':
          description: Returns 422 error with validation messages when destination is incorrect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                  destination:
                  - can't be blank
    servers:
    - url: https://app.didlogic.com
      description: Production
  /api/v1/purchases/{purchase_id}/destinations/{id}:
    patch:
      summary: Update destination
      description: 'Update an existing inbound destination for a DID number.


        **Updatable Fields:**

        - `dialing_type` - Dialing mode: `sequence`, `ring_all` or `random`

        - `callhunt` - Legacy two-state mirror of `dialing_type`; ignored when `dialing_type` is sent

        - `active` - Enable/disable this destination


        **Note:** The destination address and transport protocol cannot be changed. To change these, delete and create a new destination.'
      tags:
      - Inbound Destinations
      operationId: purchases_destinations_update
      security:
      - BearerAuth: []
      parameters:
      - name: purchase_id
        in: path
        required: true
        schema:
          type: string
          example: '43800327987'
        example: '43800327987'
        description: 'Purchased number id or number from numbers_index, purchases_index: the phone **number** (e.g. `43800327987`) or the numeric **inventory id** (e.g. `21869`). Both resolve the same DID.'
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 65
        description: Destination id from purchases_destinations_index, purchases_destinations_create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                destination:
                  type: object
                  properties:
                    callhunt:
                      type: boolean
                      description: Enable callhunt (ring all). Ignored when `destination[dialing_type]` is sent.
                      example: true
                    dialing_type:
                      type: string
                      description: 'Dialing mode of the group this destination belongs to: `sequence` tries it alone, `ring_all` dials the whole group at once, `random` picks group members in a random order. Mirrors `callhunt` (`ring_all` maps to true). Takes precedence over `callhunt`.'
                      enum:
                      - sequence
                      - ring_all
                      - random
                    active:
                      type: boolean
                      description: Activate/deactivate this destination
                      example: false
      responses:
        '200':
          description: Successfully updates destination settings and returns updated destination
          content:
            application/json:
              schema:
                type: object
                properties:
                  did_destination:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 63
                        description: Destination ID
                      transport:
                        type: integer
                        enum:
                        - 1
                        - 4
                        - 5
                        - 10
                        - 12
                        - 13
                        example: 1
                        description: 'Transport type: 1 = SIP URI, 4 = Phone number, 5 = SIP device, 10 = Webphone, 12 = WebSocket, 13 = SDK (rings the account of one of your SDK tokens; set up through the SDK, not through this API)'
                      destination:
                        type: string
                        example: sip:test@example.com
                        description: Forwarding target
                      priority:
                        type: integer
                        example: 1
                        description: Destination priority
                      callhunt:
                        type: boolean
                        example: true
                        description: Whether callhunt is enabled
                      dialing_type:
                        type: string
                        enum:
                        - sequence
                        - ring_all
                        - random
                        example: ring_all
                        description: 'Dialing mode of the group this destination belongs to: `sequence` tries it alone, `ring_all` dials the whole group at once, `random` picks group members in a random order. Mirrors `callhunt` (`ring_all` maps to true).'
                      active:
                        type: boolean
                        description: Whether destination is active
                      ai_agent_id:
                        type:
                        - integer
                        - 'null'
                        description: Linked AI agent ID (null when the destination is not an AI agent)
                      ai_agent_name:
                        type:
                        - string
                        - 'null'
                        description: Linked AI agent name (null when the destination is not an AI agent)
                    required:
                    - id
                    - transport
                    - destination
                    - priority
                    - callhunt
                    - dialing_type
                    - active
                    - ai_agent_id
                    - ai_agent_name
                    description: Updated destination details
                required:
                - did_destination
              example:
                did_destination:
                  id: 63
                  transport: 1
                  destination: sip:test@example.com
                  priority: 1
                  callhunt: true
                  dialing_type: ring_all
                  active: false
                  ai_agent_id: null
                  ai_agent_name: null
        '403':
          description: Returns 403 error when API token is incorrect
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              example:
                error: Unauthorized
        '404':
          description: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Error'
                - type: object
                  properties:
                    error:
                      type: string
                  required:
                  - error
              examples:
                returns_404_error_when_destination_does_not_exist_or_belongs_to_another_user:
                  summary: Returns 404 error when destination does not exist or belongs to another user
                  value:
                    error: destination not found
                ? returns_the_404_error_envelope_errors_base_data_not_found_when_neither_the_did_phone_number_nor_its_inventory_id_matches_a_did_you_own
                : summary: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
                  value:
                    errors:
                      base:
                      - data not found
    delete:
      summary: Delete destination
      description: 'Delete an existing inbound destination from a DID number.


        **Important:**

        - Destination is permanently removed from the DID configuration

        - Deletion is logged for audit purposes'
      tags:
      - Inbound Destinations
      operationId: purchases_destinations_destroy
      security:
      - BearerAuth: []
      parameters:
      - name: purchase_id
        in: path
        required: true
        schema:
          type: string
          example: '43800327987'
        example: '43800327987'
        description: 'Purchased number id or number from numbers_index, purchases_index: the phone **number** (e.g. `43800327987`) or the numeric **inventory id** (e.g. `21869`). Both resolve the same DID.'
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 58
        description: Destination id from purchases_destinations_index, purchases_destinations_create
      responses:
        '204':
          description: Successfully deletes destination and returns 204 No Content
        '403':
          description: Returns 403 error when API token is incorrect
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              example:
                error: Unauthorized
        '404':
          description: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Error'
                - type: object
                  properties:
                    error:
                      type: string
                  required:
                  - error
              examples:
                returns_404_error_when_destination_does_not_exist_or_belongs_to_another_user:
                  summary: Returns 404 error when destination does not exist or belongs to another user
                  value:
                    error: destination not found
                ? returns_the_404_error_envelope_errors_base_data_not_found_when_neither_the_did_phone_number_nor_its_inventory_id_matches_a_did_you_own
                : summary: Returns the 404 error envelope {"errors":{"base":["data not found"]}} when neither the DID phone number nor its inventory id matches a DID you own.
                  value:
                    errors:
                      base:
                      - data not found
    servers:
    - url: https://app.didlogic.com
      description: Production
components:
  schemas:
    Error:
      type: object
      description: Standard error response. `errors` maps a field name (or `base` for errors not tied to a specific field) to an array of human-readable messages.
      required:
      - errors
      properties:
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          example:
            base:
            - data not found
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Authenticate API requests via API key like "Bearer YOUR_TOKEN"
x-refined-from:
- didlogic-com-public-api-openapi.yaml
- didlogic-com-openapi.yml