---
updatedAt: 2026-04-20T21:16:33.000Z
agentTools:
  projectIndex: https://swoogo.readme.io/llms.txt
---

# Get Image URL

Retrieves the URL for an image associated with a specific object (e.g., event logo, speaker photo, sponsor banner). Requires `image_type` (the object type), `image_id` (the object's ID), and `field_id` (the image field) as path parameters.

# OpenAPI definition

````json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Swoogo API",
    "version": "1.0.0",
    "summary": "REST API for the Swoogo event management platform",
    "description": "The Swoogo API provides programmatic access to manage events, registrants, sessions,\nspeakers, sponsors, and related resources on the Swoogo event management platform.\n\n## Authentication\n\nThe API uses OAuth 2.0 with the **client credentials** grant type.\n\n1. **Get your credentials** — Log in to Swoogo and go to **My Profile > API Credentials**\n   to find your consumer key and secret.\n2. **Encode credentials** — URL-encode the key and secret (RFC 1738), concatenate them\n   with a colon (`key:secret`), then Base64-encode the result.\n3. **Request a token** — `POST /oauth2/token` with your encoded credentials in the\n   `Authorization: Basic {encoded}` header and `grant_type=client_credentials` in the body.\n4. **Use the token** — Include `Authorization: Bearer {access_token}` on all subsequent requests.\n\n> Tokens expire after **30 minutes**. Request a new token when you receive a `401` response.\n\n## Rate Limiting\n\nAPI requests are rate-limited to **2,000 requests per 10-minute window** per API credential.\nList endpoints cost **10 credits** per call; all other endpoints cost **1 credit**.\nRate limit status is returned in response headers:\n\n| Header | Description |\n|--------|-------------|\n| `X-Rate-Limit-Limit` | Maximum requests allowed in the current window |\n| `X-Rate-Limit-Remaining` | Requests remaining in the current window |\n| `X-Rate-Limit-Reset` | Seconds until the window resets |\n\nWhen the limit is exceeded, the API returns `429 Too Many Requests`.\n\n## Pagination\n\nAll list endpoints return paginated results in this envelope:\n\n```json\n{\n  \"items\": [...],\n  \"_links\": { \"self\": { \"href\": \"...\" }, \"first\": { \"href\": \"...\" }, \"last\": { \"href\": \"...\" } },\n  \"_meta\": { \"totalCount\": 95, \"pageCount\": 5, \"currentPage\": 1, \"perPage\": 20 }\n}\n```\n\nControl pagination with these query parameters:\n\n| Parameter | Default | Max | Description |\n|-----------|---------|-----|-------------|\n| `page` | 1 | — | Page number (1-indexed) |\n| `per-page` | 20 | 1000 | Items per page. Capped at **200** when using `expand`. |\n\nPagination metadata is also returned in `X-Pagination-*` response headers.\n\n## Filtering and Sorting\n\nUse the `search` parameter to filter results. Combine multiple conditions with `&`.\n\n**Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`, `*beginswith*`, `*endswith*`, `*in*`\n\n**Examples:**\n- `search=registration_status=confirmed` — exact match\n- `search=created_at>=2024-01-01` — date range\n- `search=last_name=*beginswith*Sm` — starts with \"Sm\"\n- `search=status=*in*confirmed|attended` — matches any value (pipe-separated)\n- `search=id>100&registration_status=confirmed` — multiple conditions (AND by default)\n\nSet `searchCondition=or` to match **any** condition instead of all.\n\nUse `sort` to order results. Prefix with `-` for descending: `sort=-created_at`.\n\n## Field Selection and Expansion\n\nUse `fields` to request only the fields you need: `fields=id,email,first_name,last_name`.\nWhen omitted, a default subset of fields is returned.\n\nUse `expand` to include related objects in the response: `expand=homeAddress,sessions`.\nEach resource documents its available expand values. Using `expand` caps the page size at **200**.\n\n## Errors\n\nAll errors return a consistent JSON response:\n\n```json\n{\n  \"name\": \"Not Found\",\n  \"message\": \"The requested resource does not exist.\",\n  \"code\": 0,\n  \"status\": 404\n}\n```\n\n| Status | Meaning |\n|--------|---------|\n| `400` | Bad Request — invalid parameters or business rule violation |\n| `401` | Unauthorized — missing or expired bearer token |\n| `403` | Forbidden — valid token but insufficient permissions |\n| `404` | Not Found — resource does not exist or is not accessible |\n| `422` | Unprocessable Entity — validation errors on input fields |\n| `429` | Too Many Requests — rate limit exceeded |\n| `500` | Internal Server Error — unexpected server error |\n\n## Webhooks\n\nSwoogo can send HTTP callbacks when resources are created, updated, or deleted.\nConfigure webhooks via the API or the Swoogo UI. Supported trigger objects:\n`event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`,\n`session_attendance`, `registrant_line_item`.\n\nWebhook payloads can be sent as `json` (application/json) or `post` (form-encoded).\n",
    "termsOfService": "https://www.swoogo.com/terms",
    "contact": {
      "name": "Swoogo Developer Support",
      "url": "https://developer.swoogo.com",
      "email": "dev@swoogo.com"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "https://api.swoogo.com/api/v1",
      "description": "Production API server"
    },
    {
      "url": "https://local.swoogo.com/api/v1",
      "description": "Local API server"
    }
  ],
  "tags": [
    {
      "name": "Images",
      "description": "Upload, retrieve, and delete images associated with resources (registrants, speakers, sponsors, etc.)."
    }
  ],
  "paths": {
    "/image/{image_type}/{image_id}/{field_id}": {
      "get": {
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "tags": [
          "Images"
        ],
        "summary": "Get Image URL",
        "description": "Retrieves the URL for an image associated with a specific object (e.g., event logo, speaker photo, sponsor banner). Requires `image_type` (the object type), `image_id` (the object's ID), and `field_id` (the image field) as path parameters.",
        "operationId": "getOneImageUrl",
        "parameters": [
          {
            "name": "image_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            },
            "description": "integer - required - The ID of the image you want to get"
          },
          {
            "name": "image_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            },
            "description": "integer - required - The ID of the image you want to get"
          },
          {
            "name": "field_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            },
            "description": "integer - required - The ID of the image you want to get"
          }
        ],
        "responses": {
          "200": {
            "description": "Get an Image URL",
            "headers": {
              "x-rate-limit-limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "x-rate-limit-remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "x-rate-limit-reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "example": "profile_picture"
                    },
                    "id": {
                      "type": "number",
                      "example": 26361060
                    },
                    "message": {
                      "type": "string",
                      "example": "File Retrieved Successfully"
                    },
                    "status": {
                      "type": "number",
                      "example": 200
                    },
                    "type": {
                      "type": "string",
                      "example": "registrant"
                    },
                    "url": {
                      "type": "string",
                      "example": "https://assets.swoogo.com/uploads/full/2879900-64fa2b4640a68.png"
                    }
                  }
                },
                "examples": {
                  "Get an Image URL": {
                    "value": {
                      "field": "profile_picture",
                      "id": 26361060,
                      "message": "File Retrieved Successfully",
                      "status": 200,
                      "type": "registrant",
                      "url": "https://assets.swoogo.com/uploads/full/2879900-64fa2b4640a68.png"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "access_token",
        "description": "OAuth 2.0 bearer token obtained from `POST /oauth2/token`. Tokens expire after 30 minutes. Include in the `Authorization` header as `Bearer {access_token}`."
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error response returned for all 4xx and 5xx status codes.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable error type name (e.g., \"Unauthorized\", \"Forbidden\", \"Not Found\").",
            "example": "Unauthorized"
          },
          "message": {
            "type": "string",
            "description": "Detailed error message explaining what went wrong.",
            "example": "Your request was made with invalid credentials."
          },
          "code": {
            "type": "integer",
            "description": "Application-specific error code. Currently `0` for all standard errors.",
            "example": 0
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code of the error response.",
            "example": 401
          }
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Authentication failed. The bearer token is missing, expired, or invalid. Obtain a new token via `POST /oauth2/token`.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Unauthorized",
              "message": "Your request was made with invalid credentials.",
              "code": 0,
              "status": 401
            }
          }
        }
      },
      "Forbidden": {
        "description": "The authenticated user does not have permission to access this resource. This can occur if the resource belongs to a different account or the API credentials lack the required scope.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Forbidden",
              "message": "You do not have access to that resource.",
              "code": 0,
              "status": 403
            }
          }
        }
      },
      "NotFound": {
        "description": "The specified resource does not exist or has been deleted. Verify the ID is correct and that the resource belongs to an event your credentials have access to.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Not Found",
              "message": "The requested resource does not exist.",
              "code": 0,
              "status": 404
            }
          }
        }
      },
      "InternalServerError": {
        "description": "An unexpected server error occurred. If this persists, contact Swoogo support with the request details and timestamp.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "name": "Internal Server Error",
              "message": "An error occurred while processing your request.",
              "code": 0,
              "status": 500
            }
          }
        }
      }
    },
    "headers": {
      "RateLimitLimit": {
        "schema": {
          "type": "integer"
        },
        "description": "Maximum number of API requests allowed in the current 10-minute window.",
        "example": 2000
      },
      "RateLimitRemaining": {
        "schema": {
          "type": "integer"
        },
        "description": "Number of requests remaining in the current rate limit window.",
        "example": 1367
      },
      "RateLimitReset": {
        "schema": {
          "type": "integer"
        },
        "description": "Number of seconds until the current rate limit window resets.",
        "example": 0
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Authentication",
      "tags": [
        "Authentication"
      ]
    },
    {
      "name": "Core Resources",
      "tags": [
        "Events",
        "Registrants",
        "Sessions",
        "Speakers",
        "Sponsors",
        "Contacts"
      ]
    },
    {
      "name": "Registration",
      "tags": [
        "Registrant Types",
        "Packages",
        "Discount Codes",
        "Transactions",
        "Registrant Sessions",
        "Registrant Session Waitlists",
        "Registrant Groups",
        "Registrant Line Items",
        "Registrant Line Item Audits"
      ]
    },
    {
      "name": "Event Configuration",
      "tags": [
        "Event Fields",
        "Event Questions",
        "Event Websites",
        "Event Badges",
        "Event Folders",
        "Session Fields",
        "Session Locations",
        "Session Attendance",
        "Session Scans",
        "Session Fees",
        "Package Fees",
        "Tracks",
        "Pages"
      ]
    },
    {
      "name": "Speakers & Sponsors",
      "tags": [
        "Speaker Sessions",
        "Sponsor Fields",
        "Sponsor Attendance"
      ]
    },
    {
      "name": "Contacts & Communication",
      "tags": [
        "Contact Fields",
        "Invitation Lists",
        "Data Lists",
        "Data List Items"
      ]
    },
    {
      "name": "Call for Speakers",
      "tags": [
        "Call for Speaker Contacts",
        "Call for Speaker Reviews",
        "Call for Speaker Submissions"
      ]
    },
    {
      "name": "Media",
      "tags": [
        "Images"
      ]
    },
    {
      "name": "Integrations",
      "tags": [
        "Webhooks",
        "Webhook Groups"
      ]
    }
  ]
}
````